Part Number:TMS320F280049C
借鉴官方例程向Eeprom当中发送指令的形式。官方例程中先置位STT,再置位STP。
撰写了一个批量非阻塞函数,该功能根据需要写入的字节数先判断是否跨页,如果跨页便分多次写,在判断每次写入的数据是否会超过FIFO长度。如果超过FIFO那么就会在进行拆分。
假设需要写入100个数据,页大小为32,那么函数自动分4次页写,在看页写入大小是否超过FIFO,如果超过便拆为多次FIFO写。且每次FIFO写都会有5ms的等待时间。
但是在实际使用过程中发现本次需要写入1000个数据,调用该函数则有概率出现STT一直置1,IIC初始化配置后,在执行函数还是为出现STT一直置1。
经过检查发现在执行先置位STT,再置位STP代码前将ADC中断关闭,执行代码完后在开启ADC中断,该情况不在出现。
另其它几种解决方案:
1、由官方的先置位STT,再置位STP改为先置位STP,再置位STT。
2、由官方的先置位STT,再置位STP改为先置位STP,再将数据全部发在FIFO后才置位STT。
3、向该函数传递的长度为10,则情况不出现。
一直无法解释该现象原因。现在求助给大佬给一个思路。
Lydia:
您好,
感谢您对TI产品的关注!为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上(https://e2e.ti.com/p/addpost),将由资深的英文论坛工程师为您提供帮助。