准备做一个项目,用到STM32L073芯片中I2C模块的SMBUS模式,最近对其进行了调试,产生了以下疑问,望有人能够解惑,不胜感激! 1. SMBUS的收发两端的PEC字节不一致,导致PECERR置1;详细情况是这样的: 设置NBYTES=3;ADD10=1;HEAD10R=0;RD_WRN=1ECBYTE=1; 想要从从设备读取2次数据,每次读取2个数据字节+1Byte PEC字节,两次读取中间不产生STOP,流程如下(省略了ACK): START -> ADDR0(bit0=0) -> ADDR1 -> ADDR0(bit0=1) -> DAT0 -> DAT1 -> PEC0 -> RESTART -> ADDR0(bit0=0) -> ADDR1 -> ADDR0(bit0=1) -> DAT2 -> DAT3 -> PEC1 -> STOP; 如上流程,主从两边计数得到的PEC数据不一致,经分析,主端参与计算的字节为ADDR0(bit0=0)、ADDR1、ADDR0(bit0=1)、DAT2、DAT3,最后计算得到PEC1,而从端参与计算的字节为ADDR0(bit0=0)、ADDR1、ADDR0(bit0=1)、DAT0、DAT1,ADDR0(bit0=0)、ADDR1、ADDR0(bit0=1)、DAT2、DAT3,计算得到待发送的PEC1,不知哪种正确,或者我程序中什么地方配置有问题。 哪位熟悉能帮忙解答一下! |
STM32L011D4芯片用SWD无法下载程序
求助:STM32L0系列标准库哪里下?
STM32L051低温时LPUART串口波特率异常
STM32L051单片机ADC如何彻底关闭?
STM32L051C8进入低功耗模式电流偏大
STM32L052C8T6通过I2C模拟读16位数
STM32L0的VLCD外接5V会有问题吗
求助!!使用STM32L073 IO口模拟IIC接口读写AT24CM01 程序不停...
STM32L072RB写Bank2 EEPROM不响应中断
STM32L031无法进入boot
PEC校验字节包括了PEC字节之前的所有数据。
下面是SMBUS协议中对PEC的描述
评分
查看全部评分
评分
查看全部评分
找了个例程给你参考一下:
http://blog.csdn.net/zlk1214/article/details/76037417
评分
查看全部评分