嵌入式硬件通信接口协议-IIC(二)分层架构设计模拟接口
应答的目的,就是“接收方”告知“发送方”,我已正常收到刚刚发来的数据。
等待应答ACK
既然是应答,就有两向性:IIC从机应答IIC主机;IIC主机应答IIC从机。
上图的应答ACK/NACK都是IIC主机主动输出的,是用来告知从机“我主机已正常收到”。
而IIC从机告知主机的应答ACK,这里要用等待ACK的概念,主机通过读取SDA管脚电平来检测ACK信号。
以上是利用GPIO管脚模拟实现的时序,封装成DigCore_Embed嵌入式软件架构的BSP层接口,对上层提供IIC硬件接口,向下操作GPIO和时序的模拟。移植过程中可以根据目标平台,在上述这些已经封装好的接口内,做适当调整。
比如采用官方Demo程序代替GPIO模拟方案,只需要修改这以上接口中的代码即可,对于上层应用库,不论是温湿度传感器SHT20,还是EEPROM存储芯片AT24C1024B,甚至是BS81163-A的触摸键盘芯片,这几个使用了BSP层的IIC接口,这些代码都无需改动。
这就是嵌入式软件的分层设计思想的优势。
以上函数内部所调用的接口,都是当前BSP层里IIC模块源码中的静态函数:
总结,IIC时序的模拟,主要思路是根据IIC时序特点,在对应的信号后面做对应的时延,以达到时序的展现!难点之处就是把IIC时序拆解成多个信号特征进行模拟时,如果对信号时序图了解不深,在对比代码时比较绕,需要静下心仔细核对!
以上代码仅仅完成初步的编写和整理,未在具体外设上验证。此BPS层的IIC模块最终源码,敬请期待下回分享出来!
图片新闻
技术文库
最新活动更多
-
即日-12.26立即报名>>> 【在线会议】村田用于AR/VR设计开发解决方案
-
1月8日火热报名中>> Allegro助力汽车电气化和底盘解决方案优化在线研讨会
-
1月9日立即预约>>> 【直播】ADI电能计量方案:新一代直流表、EV充电器和S级电能表
-
即日-1.14火热报名中>> OFweek2025中国智造CIO在线峰会
-
即日-1.20限时下载>>> 爱德克(IDEC)设备及工业现场安全解决方案
-
即日-1.24立即参与>>> 【限时免费】安森美:Treo 平台带来出色的精密模拟
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论