很好,只要端口反转时间不低于要求就行 |
楼主问题解决了吗?我也遇见了同样的问题 |
void AT24C02_readData(uchar beginAddr, uchar dataSize) { uchar i=0; start(); write_1(0xa0); ack(); write_1(beginAddr); ack(); start(); write_1(0xa1); ack(); while(dataSize--) //你上面main里给你参数是2,就是里面循环了两次 { *(buf+i)=read_1(); i++; Send_ack(); //读两次是发一个ACK加一个Nack; } nack(); stop(); Delay1(1); } |
不用想了,没办法,最后用单字节读再加个循环搞定,就是有点浪费资源 |
延时的问题试了,除非还有什么我不知道的地方,不然还是不行 |
zhy123654 发表于 2019-9-3 17:52 建議讀操作之間加一些延時嘗試一下 |
ping264888 发表于 2019-9-3 12:52 现象是这样,写进去后,我用单字节读,就没问题,比如 buf[0]=IIC_read(0 ); buf[1]=IIC_read(1 ); buf[2]=IIC_read(2 ); buf[3]=IIC_read(3 ); 这样就行,所以觉得还是连读函数有问题 |
嗯, 你看看是不是操作太快導致的, 我之前就遇到過. http://www.51hei.com/bbs/dpj-151160-1.html |
xhaity 发表于 2019-9-3 10:11 是这样的,我把4个都写进去,然后再读出来,我先显示buf[0]是正确的,然后我又显示buf[1],结果就不对了 |
不是只读一个,你是只显示一位 |