打印
[应用相关]

STM32 IIC难点易错点(转载)

[复制链接]
528|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
先来点题外话~网上说STM32F103的IIC有瑕疵!就当是有些短板吧,个人觉得,用起来肯定没问题,只是不好用。人家说ST公司考虑到专利问题,没按飞利浦的标准来。导致STM32的IIC使用起来非常繁杂。下面就讲讲用STM32 IO口模拟IIC的注意问题:
      IIC总线时序:


我就因为没理解好应答,吃了亏。讲一讲IIC的几个重要状态:
      1、空闲状态:当IIC总线空闲时,SDA和SCL两条线均为高电平,由于连接到总线上的器件必须是漏级和集电极开路(至于威为什么请读者自己搜索),只要有一个器件任意时刻输出低电平,都将使总线上的信号变低,即各器件的SDA和SCL是线与的关系。由于各器件输出端是漏级开路,故必须通过上拉电阻接正电源,以保证SDA和SCL在空闲时被拉为高电平。
      2、起始信号S和终止信号P(注意起始和终止信号中的延时,严格按照数据手册来,快一点,慢一点都不行!):
      起始信号S:在SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号,只有在起始信号以后,其他命令才有效。
      终止信号P:在SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号,随着终止信号的出现,所有外部操作都结束。如图:



      3、数据的传送:一句话:低电平变化,高电平稳定。
      IIC总线在进行数据传送时,每一位数据位的传送都与时钟脉冲相对应。时钟脉冲为高电平期间,数据线上的数据必须保持稳定;只有在时钟线为低电平期间,数据线上的电平状态才允许变化。即:数据在SCL的上升沿来之前就需准备好,并在下降沿来之前必须稳定。如图:





沙发
keaibukelian|  楼主 | 2018-12-5 13:08 | 只看该作者
   4、(易错)应答信号ACK、非应答信号NACK、终止信号P:
      应答信号ACK:该信号是由从器件产生的,IIC总线在传送一字节(8位)数据后都必须有应答信号A,下面是易错点:对于反馈有效应答位ACK的要求是,接收器在第九个时钟脉冲之前得低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。表示其已经收到一个8位的数据了。如图:



      非应答信号NACK:该信号是由主器件产生的。当主器件接收来自从机的数据时,接收到最后一个数据字节后,必须给从器件发送一个非应答信号,使从机释放数据总线,以便主机发送一个终止信号,从而结束数据的传送。
      终止信号P:主机发送终止信号有两种情况:1、当数据传输完成后,主器件发送终止信号。2、由于某种原因,接收方不对主器件寻址信号应答时,例如接收方正在进行其他处理而无法接收总线上的数据时,必须释放总线,将数据线置为高电平,而由主器件产生一个终止信号以结束总线的数据传送。
      从上文中可以看出:
      1、无论何种数据传输格式(主发从收,主收从发,主机收发),寻址字节都由主器件发出,数据字节的传送方向则由寻址字节中的方向为来决定。
      2、寻址字节只表明了从器件的地址及数据传送方向。从器件内部的n个数据地址,由器件设计者在该器件的IIC总线数据操作格式中,指定第1个数据字节作为器件内的单元地址指针,并且设置地址自动加减功能,以减少从器件的寻址操作。
      3、每个字节传送都必须有应答信号相随。
      4、从器件在接收到起始信号后都必须释放数据总线,使其处于高电平(最后一个图),以便主器件发送从机地址。


使用特权

评论回复
板凳
观海| | 2018-12-6 13:05 | 只看该作者
这个说的好细致

使用特权

评论回复
地板
keaibukelian|  楼主 | 2018-12-12 13:06 | 只看该作者
观海 发表于 2018-12-6 13:05
这个说的好细致

呵呵 搬运工而已

使用特权

评论回复
5
观海| | 2018-12-12 13:36 | 只看该作者

省的去别的网上查找了

使用特权

评论回复
6
dongliushui| | 2018-12-12 14:14 | 只看该作者
模拟这个一般都是主机模式,这个就看你从机手册的时序图就行了,按照时序,你先用宏实现基本的拉高拉低,读取等操作,后面按照时序插入延时就可以了。

使用特权

评论回复
7
keaibukelian|  楼主 | 2018-12-13 16:40 | 只看该作者
dongliushui 发表于 2018-12-12 14:14
模拟这个一般都是主机模式,这个就看你从机手册的时序图就行了,按照时序,你先用宏实现基本的拉高拉低,读 ...

一看您就是明白人

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

3875

帖子

5

粉丝