IIC协议接口在ARM系统下的操作
【IIC协议接口在ARM系统下的操作】在做IIC协议测试的时候对于写入的数据通过demo自带的测试函数都能够正确的读取出来,但是通过自己按照IIC协议的流程图写出来的函数也能够把所有的数据读取出来,但是是偶数读一遍,奇数读一遍。交叉着读取出来的。这是不正确的。。调试了好几天都没修正过来。今天我又重新把他的函数重新写了一遍。。关键的部分在while(rIICCON&0x10)这个条件上。。为什么呢?请看这个截图
这个是判断是否写中断或者读取中断的标志。。我将把我的代码附上,请大家学习。。 //先传输地址
rIICDS=slavaddr;
rIICSTAT=0xf0;
_iicDataCount=1;
while(_iicDataCount!=-1)
{
if(rIICCON&0x10)
{
rIICDS = addr;
for(i=0;
i<10;
i++);
//for setup time until rising edge of IICSCL
rIICCON = 0xaf;
_iicDataCount--;
} } 这些都是写操作,将slavaddr addr 传输到rIICDS寄存器里面去。。。 / 下面是配置为master Rx 模式。。按照流程操作。
rIICDS=slavaddr;
rIICSTAT=0xb0;
_iicDataCount=1;
_iicPt=0;
while(_iicDataCount!=-1)
{
if(rIICCON&0x10)
{
if((_iicDataCount--)==0)
{
_iicData[_iicPt++] = rIICDS;
rIICSTAT = 0x90;
//Stop MasRx condition
rIICCON= 0xaf;
//Resumes IIC operation.
Delay(1);
//Wait until stop condtion is in effect.
}
_iicData[_iicPt++] = rIICDS;
//The last data has to be read with no ack.
if((_iicDataCount)==0)
rIICCON = 0x2f;
//Resumes IIC operation with NOACK.
else
rIICCON = 0xaf;
//Resumes IIC operation with ACK
}
}
*data=https://www.it610.com/article/_iicData[1];
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 2020-04-07vue中Axios的封装和API接口的管理
- 调取接口时报404错误(ID:16)
- CICC(脑机接口,科幻几近成真())
- 接口|axios接口报错-参数类型错误解决
- 190403|190403 - Jmeter压测接口
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- (八)签协议
- 微信小程序请求接口格式