标题:
单片机IIC通信,无法接收到从机发送的数据
[打印本页]
作者:
PDDDF
时间:
2020-3-19 16:01
标题:
单片机IIC通信,无法接收到从机发送的数据
uchar IIC_receive_dat()//接受数据
{
uchar i,num;
SCL = 0;
delay1();
SDA = 1;
for(i = 0;i <= 7;i++)
{
SCL = 1;
delay1();
num = (num<<1)|SDA;
SCL = 0;
delay1();
}
return num;
}
接受程序如上,接收前已检测到从机发送的ACK信号,然后开始执行上面的接收程序,不过无法收到任何数据,从机芯片手册说的发送8bit数据,然而我把接收结果与0到255一一比较,居然没有找出收到的数据内容到底是什么,0到255没有一个数值能触发我写的条件,很迷惑,不是0,也不是0xff,这种场面真的第一次见,不知道有没有大佬知道其中的问题,谢谢
作者:
黄youhui
时间:
2020-3-19 18:02
留个眼,
作者:
jamiliang
时间:
2020-3-20 01:04
1.SDA = 1;之后是否需要设置SDA为输入模式?
2.从机是否需要先发送寄存器地址再进行读出操作?
3.示波器看以下SDA,是否有波动,SCL是否速度超过器件限制(100K,410K?)
作者:
PDDDF
时间:
2020-3-20 13:54
逐位检测收到的信号后发现输出的数据常态时为0xff,触发态时数据中对应的触发位为0,已检测到共有4个触发源,然而当我用FOR循环接收8bit数据时,无法用检测对应触发位是否为0来检测收到的8bit数据内容,可能是语句出了问题,但是将接收数据子程序移植到其他IIC收发设备上发现运行正常,,目前只能用顺序语句逐位检测来确定触发位的电平状态,无法使用FOR循环
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1