STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
STVD如何生成库文件
STM8 flash 库函数 startaddress = startaddress + ((uint32_t)BlockNum * FLASH_BLOCK_S
stm 8 flash 在RAM运行代码的问题,是不是库函数有问题 Library call (?sll32_l0_l0_a) from within a
STM 有能替代MCHC912B32CFUE8 / NXP的型号吗?
STM8S的CAN总线使用
STM8L151在使用DAC功能后严重发热
STM8 IIC SLAVE 400K
STM8S 定时器1互补输出pwm
STM8S003F3 NRST电压低,无法开机
读模式麻烦一点,我的问题也出在这,先发送伪写命令来改变M24M02内部的地址指针,M24M02内部的地址指针是上次读或写命令结束时的地址指针,如果不需要改变该指针可以不发送伪写命令,直接读就行,伪写命令为 起始位,器件地址+写位,存储地址高字节,存储地址低字节,停止位。停止位可以不要,停止位只是起到释放总显的作用,应为后面已经连接的两器件还需要通信,所以可以不释放总线,即可以不发送停止位。
伪写命令后接着发送起始位,器件地址+读位,丛机应答,然后主机进入接收模式自动接收M24M02发出的数据,接收数据时应答由主机产生,丛机每收到一个应答,将下一个数据发送到总线,丛机内部数据地址指针自动加1,如果主机忙,则等待主机空闲再自动发送数据,主机有两个接收数据暂存器,一个为真正的暂存器I2C_DR,一个为串行数据接收器,该接收器接收到8位数据后将数据放入I2C_DR中,如果I2C_DR有数据,则等待I2C_DR空后才将数据放入I2C_DR中,在等待的过程中主机拉低总线,告诉丛机现在主机忙,待会空闲时再发送数据,~!!!!!!!!!!!!!最关键的就在这,如果只是读取一个数据,则主机发不发送应答位都无所谓,只要接收完成后发送停止位来释放总线就行。如果是接收多个数据,且主机有其他工作要做,所以主机读I2C_DR较慢,则在最后一个数据你想停止接收的时候,I2C_DR中和串行接收器中都有数据,计算接收数据个数的时候一定要把这两个数据考虑进去,不然容易出错。我的问题就是没有计算这两个数据,导致老是和需要的数据错位。