梦想的天空 发表于 2017-8-29 11:56

官方可否出一个健壮的硬件IIC程序

现在用你们官方出的硬件IIC程序,程序经常卡死,如果开了芯片中断,就没法用,现在每次用iic都要先关中断,出来了在开中断,但是还是经常卡死,
/**********************************************
// IIC Write Data
**********************************************/
void Write_IIC_Data(unsigned char IIC_Data)
{
        IICCON&=~SI;
        IICCON|=STA; //启动
        while((!(IICCON&SI))&&(IICSTA!=0x08));
        IICCON&=~STA;
        IICCON&=~SI;
        IICDAT=0x78;                        //数据1
        while(IICSTA!=0x18);//卡死
        IICCON&=~SI;
        IICDAT=0x40;
        while(IICSTA!=0x28);//卡死
        IICCON&=~SI;
        IICDAT=IIC_Data;
        while(IICSTA!=0x28);//卡死
        IICCON&=~SI;
        IICCON|=STO; //STA=1;
}


如果使用了官方的触摸库,卡死特别频繁

linqing171 发表于 2017-11-12 00:48

卡死的时候 IICSTA 是多少?波形什么样?
while(IICSTA!=0x18);//卡死 ====》替代为下面代码

delay(10us);
if(IICSTA!=0x18) { 输出触发信号,让示波器把SCL和SDA抓下来;备份此时IICSTA到全局调试变量; while(1);}

梦想的天空 发表于 2017-11-22 22:56

主要问题不是要观察当时卡死是什么波形或者原因,要的是如果卡死,程序不会卡死,可以容错,或者说重写读写数据

冷画 发表于 2017-11-23 08:45

顶贴支持下

lanjackg2003 发表于 2017-12-14 15:59

规格书好像都没有硬件i2c
这个硬件i2c可以在哪里找到

梦想的天空 发表于 2018-1-4 20:27

有的,你是不是用看错芯片的规格书

wakayi 发表于 2018-7-14 21:17

我觉得是楼主自己的问题   不是芯片的问题

lankii35 发表于 2019-12-7 11:53

确实,这部分代码遇到有中断经常卡死,io模拟读取iic又有问题,用官方这套中断后就卡死

lele4090039 发表于 2019-12-18 20:57

lankii35 发表于 2019-12-7 11:53
确实,这部分代码遇到有中断经常卡死,io模拟读取iic又有问题,用官方这套中断后就卡死 ...

奇怪我用的一直很好{:shocked:}

jimmhu 发表于 2019-12-19 22:15

硬件iic和模拟iic有什么区别

lihuami 发表于 2019-12-19 22:16

模拟IIC是需要了解IIC的协议

xiaoyaozt 发表于 2019-12-19 22:16

模拟IIC的流程更清楚一些。

uptown 发表于 2019-12-19 22:16

模拟IIC可以在任何管脚上吧

cehuafan 发表于 2019-12-19 22:16

期待吧   

wwppd 发表于 2019-12-19 22:16

现在有相关的程序吗?   

maqianqu 发表于 2019-12-19 22:16

硬件有几个硬件iic

dspmana 发表于 2019-12-19 22:16

硬件IIC怎么接收不同字节的长度的数据

eefas 发表于 2019-12-19 22:16

模拟iic还是使用硬件iic,哪个更好

pl202 发表于 2019-12-19 22:17

楼主有相关的代码吗?   

xiaoyaozt 发表于 2019-12-19 22:17

      
页: [1] 2 3
查看完整版本: 官方可否出一个健壮的硬件IIC程序