本帖最后由 Fanexs168 于 2023-2-22 23:52 编辑
查看F003 SDK的例程,硬件I2C主机只有中断收发的体现。但遇到有些场合,有的客户不接受中断处理的方案,不期望引入太多中断。
在此新整理了F003的主机Polling发送例程,封装好了I2C_Master_Transmit()、I2C_Master_Receive()、I2C_Master_Tranmit_NOStop()这三个主机收发相关的API——包含器件地址、数据、数据长度三个收发要素。
二次封装,操作EEPROM
- 二次封装出EEPROM_Write()、EEPROM_Read()函数,跟AT24C256C通信
- 查看EEPROM手册。
- 5ms一个写入周期,跟写入数据量无关。
- 每页做多可连续写入64Byte
①往0x0100地址写入4字节数据
②往0x0100地址读回4字节数据。匹配,成功!
③往0x0100测试连续写入64字节,读回正常
④如果写操作超过64字节,会从Page开头重新开始写入此page,死循环直到遇到Stop条件(此EEROM单次最大写入64Byte,对应一个Page页的大小)
- 如下,操作长度超过当页Page的第64字节后,写入索引号会重回/覆盖当前Page的第1个字节继续往后写入
- 所以针对写操作,EEPROM API后续需要优化上跨页写入的支持
但是读操作没有上述字节长度影响,会一直往后读
|
@782719451 :已经更新了。之前上传遗漏,不好意思!
您好,您发的压缩包APM32F0xx_SDK_v1.6 - 副本.rar里面为串口示例,能重新发下硬件I2C阻塞式API例程吗