1. bread88lifa利发国际娱乐论坛/
  2. 推荐专区/
    1. 电子论坛综合区
    2. 嵌入式论坛
    3. 电源技术论坛
    4. 硬件设计论坛
    5. 测试测量论坛
    6. 检测技术与质量
    7. EDA设计论坛
    8. 综合技术与应用
    9. 开源硬件
    10. IC设计论坛
    11. 消费电子论坛
    12. 无线通信论坛
    13. 个人版区
    14. 厂商专区
    15. 论坛服务区
    16. 高校联盟
    17. 供求信息发布
  3. 工程师创意
    1. 技术干货集中营
    2. 专家问答
    3. 用户帮助┃咨询与建议┃版主议事
    4. 工程师杂谈
    5. 工程师职场
    6. 论坛电子赛事
    7. 社区活动专版
    8. 发烧友活动
  4. / 一种新型外设接口的构想
    关闭提示

[创意分享] 一种新型外设接口的构想

[复制链接]
技术员
发表于 2018-1-12 13:11:04   423 查看 0 回复 只看该作者 倒序浏览
分享
现有的外设接口的优缺点:
电路连接都是有VCCGND两根电源线的,后面不再赘述了。应用的外设都局限在板载的一些低速低通信量芯片或模块,高性能或特殊需求的外设接口和此文无关。
单线总线(1-wire
18B20,硬件链接只需一根数据线,非常简单,但在编程和CPU效率上却很不理想,没有中断通知,通讯速率很低,而且在一个完整访问周期内不允许被中断。
I2C总线
I2C 接口的EEprom,只需要I2C两根接线,cpu主动读写数据。
I2C 接口的 温湿度传感器芯片,只需要I2C两根接线,需要cpu主动查询。
I2C 接口的多轴重力加速度传感器,除了I2C两根接线外还需要一根中断线通知CPU状态有变化。
I2C 接口的触摸屏,除了I2C两根接线外还需要一根中断线,一根复位/唤醒线。
通信速率较低,可以挂接多个从设备。总的来讲I2C接口还是比较简洁的,编程也不太复杂。
SPI总线
SPI接口的无线模块,SPI 4根线,一根中断线,一根复位/唤醒线,共计6根线。
SPI接口通信速率较高,但链接线数较多,尤其在挂接多个从设备时,每多一个设备都要多一条片选线和中断线。另外SPI接口虽然是全双工接口,可到目前为止我还从来没见过使用全双工的情况。
串口
Uart接口的从器件,自带收发中断,一般就收发两根线,为异步通信,通信速率低距离较短,为两主机对话模式,作为从机接口的话,编程相对复杂。
USB总线
差分两线链接,硬件链接很简单,速率高,距离远,但芯片实现复杂,软件协议也很复杂,不适用于板载的低成本低功耗低复杂度从属器件。
虽然I2CSPI总线都是可挂接多个从设备,但实际开发中大多数都是只挂一个从设备;即使真得要挂接多个从设备,在软硬件设计上也要多加小心,系统鲁棒性不是很好。另外实现中断通知,复位唤醒还需要借助额外的gpio引脚连接和中断响应处理,不够简洁。
而且有SPIUart还有多种硬件链接上的扩展或变体,使得软硬件设计不好统一处理。
基于以上情况,个人构想(不着边际,胡思乱想)这样一种从设备总线,适用于通信量不是很大(几字节到几K字节),速率要求不高(100K~100Mbps),距离不是很远(1~100cm),有中断通知,休眠唤醒,硬件复位等操作需求的情况。主要是在I2C总线基础上实现,命名为
TWItow wire interface
特性如下:
1. 只需两根线,3.3V TTL电平,不需要额外扩展硬件线路,链接简单易实现。简洁统一的电路接口,标准易扩展的报文协议。
2. 只接一个从设备,免去了片选信号或地址字段,消除了总线竞争会引发的各种异常,因而大幅简化了芯片和软件复杂度。
3. 为同步传输方式,类似I2C总线,一根时钟线,一根数据线。相比于异步传输抗干扰强,通信速率高。即便用gpio模拟该总线,在通信中因CPU中断响应而拉长比特位也不影响传输准确性。
4. 时钟线由主机推挽输出,从机为输入端,空闲时为高电平,如果芯片处于休眠状态,时钟线置低能唤醒从机。
数据线为半双工方式,主从都可为输入模式,或开漏输出模式,需要外部电阻上拉,所以空闲时也为高电平。在空闲状态下,如果从器件有消息通知主机,可以发送一个低电平脉冲,这时主机中断响应,待数据线被从机释放恢复高电平后,主机方可发送数据。
在通信过程中如果从机出现忙碌,故障等问题也可一直保持数据线拉低,主机则一直等到从机释放数据线后,才可继续通信,查询从机状态。
5. 通信以字节为单位,每字节8位,高位先出。每次通信必须为一个完整报文,报文格式固定但长度不定。
通信中每发一字节不需要有应答过程,I2C每收发一字节都有一个应答过程,这会使得芯片电路和软件实现变得复杂,同时也影响通信速率。SPI就没有校验位,校验可以在报文收发完成后整体校验。
6.每个从机都有一个最多128字节的寄存器组,报文通信就是读取或改写这一组寄存器值。电路上通过移位寄存器便可以实现。
对于一般的传感器或控制器,这最大的128个字节足够一个报文就传输足够多的信息。对于加大数据访问量的芯片则需要通过寄存器间接访问了。如对于存储类芯片则不够,可以先一个短报文设定内存访问地址,后一个起始地址设为127,让首字节自后的数据访问内存。SPI接口的无线模块很多就是类似这样的方式。
7.报文的首字节高7位为寄存器地址(0~127),最低位为读写控制位(0为写1为读),表明第二字节从哪一个寄存器开始读写。
如果报文首字节为0,即表示要从0寄存器开始写,从机要忽略后面的数据,当数据长度大于等于4字节时,从机要进行硬件复位,复位后处于接收模式,等待主机命令。所以从机的0号寄存器应当不分配其他功能位。


I2C相比是
去掉了起始位,停止位处理
去掉应答
去掉多主机多从机情况
去掉报文10位设备地址的情况
增加寄存器地址段
增加硬件唤醒复位功能
增加中断触发功能
SPI相比是
去掉了片选信号
将收发两线合并成一线
SPI4种电平相位模式统一为一种
增加硬件唤醒复位功能
增加中断触发功能
可以看做是I2CSPI总线的结合体变种,电路连接类似于I2C,而字节传输协议和芯片实现方式类似于SPI,但软硬件实现起来都更简洁。



未完待续。。。

标签:外设接口 I2C SPI 驱动程序
举报
高级模式
您需要登录后才可以回帖 登录 | 注册
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表
  1. time最新主题
  2. recommend推荐主题
  3. hot热门主题
  4. post 我的帖子
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区

88lifa利发国际娱乐

百度360搜索搜狗搜索