我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 896|回复: 4

[技术文章] [MCU] 一种新型外设接口的构想

[复制链接]

该用户从未签到

60

主题

91

回帖

0

积分

二级逆天

积分
0

终身成就奖

QQ
发表于 2018-1-13 13:37:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
现有的外设接口的优缺点:

电路连接都是有VCC,GND两根电源线的,后面不再赘述了。应用的外设都局限在板载的一些低速低通信量芯片或模块,高性能或特殊需求的外设接口和此文无关。

单线总线(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,但软硬件实现起来都更简洁。

评分

参与人数 1威望 -5 收起 理由
老吴 -5 乱发帖。下不为例

查看全部评分

回复

使用道具 举报

  • TA的每日心情
    慵懒
    1 小时前
  • 签到天数: 145 天

    [LV.7]常住居民III

    82

    主题

    1万

    回帖

    1万

    积分

    三级逆天

    积分
    10329

    社区居民社区劳模原创先锋奖终身成就奖特殊贡献奖优秀斑竹奖

    QQ
    发表于 2018-1-13 14:21:36 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-9-7 09:00
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    4981

    回帖

    3456

    积分

    二级逆天

    积分
    3456

    终身成就奖社区居民优秀斑竹奖

    QQ
    发表于 2018-1-13 15:18:10 | 显示全部楼层
    谢谢分享 一种新型外设接口的构想
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-14 16:03
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    0

    主题

    1万

    回帖

    7618

    积分

    二级逆天

    积分
    7618

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2018-1-13 15:52:38 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-10-1 09:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    63

    主题

    1212

    回帖

    2075

    积分

    PADS-180305高级班

    积分
    2075

    终身成就奖优秀斑竹奖

    QQ
    发表于 2018-1-13 16:26:43 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表