你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
STM8L152手册I2C主机接收模式描述
举报
测试标签123
IAR FOR ARM和IAR FOR STM8无法共存,
STM8L052,液晶内部电源怎么用?
STM8S103飞线外接芯片,I2C不能得到slaveAddress应答,通讯失败。
STM8S105C6T6 UART2串口,能接收数据,不能发送数据
STM8S105K4 串口2 无奇偶校验,也能接收 偶校验的 数据
在STM8S的IAP使用中断和APP使用中断问题
STM8L151 SMBUS设计
STM8S103F复位异常
STM8L的LCD调试时不亮
读模式麻烦一点,我的问题也出在这,先发送伪写命令来改变M24M02内部的地址指针,M24M02内部的地址指针是上次读或写命令结束时的地址指针,如果不需要改变该指针可以不发送伪写命令,直接读就行,伪写命令为 起始位,器件地址+写位,存储地址高字节,存储地址低字节,停止位。停止位可以不要,停止位只是起到释放总显的作用,应为后面已经连接的两器件还需要通信,所以可以不释放总线,即可以不发送停止位。
伪写命令后接着发送起始位,器件地址+读位,丛机应答,然后主机进入接收模式自动接收M24M02发出的数据,接收数据时应答由主机产生,丛机每收到一个应答,将下一个数据发送到总线,丛机内部数据地址指针自动加1,如果主机忙,则等待主机空闲再自动发送数据,主机有两个接收数据暂存器,一个为真正的暂存器I2C_DR,一个为串行数据接收器,该接收器接收到8位数据后将数据放入I2C_DR中,如果I2C_DR有数据,则等待I2C_DR空后才将数据放入I2C_DR中,在等待的过程中主机拉低总线,告诉丛机现在主机忙,待会空闲时再发送数据,~!!!!!!!!!!!!!最关键的就在这,如果只是读取一个数据,则主机发不发送应答位都无所谓,只要接收完成后发送停止位来释放总线就行。如果是接收多个数据,且主机有其他工作要做,所以主机读I2C_DR较慢,则在最后一个数据你想停止接收的时候,I2C_DR中和串行接收器中都有数据,计算接收数据个数的时候一定要把这两个数据考虑进去,不然容易出错。我的问题就是没有计算这两个数据,导致老是和需要的数据错位。