完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现有的外设接口的优缺点: 单线总线(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总线 差分两线链接,硬件链接很简单,速率高,距离远,但芯片实现复杂,软件协议也很复杂,不适用于板载的低成本低功耗低复杂度从属器件。 虽然I2C,SPI总线都是可挂接多个从设备,但实际开发中大多数都是只挂一个从设备;即使真得要挂接多个从设备,在软硬件设计上也要多加小心,系统鲁棒性不是很好。另外实现中断通知,复位唤醒还需要借助额外的gpio引脚连接和中断响应处理,不够简洁。 而且有SPI,Uart还有多种硬件链接上的扩展或变体,使得软硬件设计不好统一处理。 基于以上情况,个人构想(不着边际,胡思乱想)这样一种从设备总线,适用于通信量不是很大(几字节到几K字节),速率要求不高(100K~100Mbps),距离不是很远(1~100cm),有中断通知,休眠唤醒,硬件复位等操作需求的情况。主要是在I2C总线基础上实现,命名为 TWI(tow 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相比是 去掉了片选信号 将收发两线合并成一线 SPI的4种电平相位模式统一为一种 增加硬件唤醒复位功能 增加中断触发功能 可以看做是I2C与SPI总线的结合体变种,电路连接类似于I2C,而字节传输协议和芯片实现方式类似于SPI,但软硬件实现起来都更简洁。 未完待续。。。 |
|
相关推荐 |
|
谁知道这个16脚的芯片是什么型号2-15脚输出的互补的450KHZ方波电流达到200MA
391 浏览 0 评论
555 浏览 0 评论
1239 浏览 0 评论
1089 浏览 0 评论
开源项目!基于Arduino做的“鱿鱼游戏”BOSS面具,支持动作检测
675 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:09 , Processed in 0.632085 second(s), Total 47, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号