您好!
我使用 以下代码尝试了回送模式进行自检
/*用户代码开始(2)*/
#define LOAD_ADD 0x75
#define SLV_add 0x5A
#define bsize 8.
uint8 TX_PACK[16]={0x5A、0x5B、0x5C、0x5D、0x5E、0x5F、0x5A、0x5B、0x5C、0x5D、0x5C、0x5F、0x5A、0x5B、0x5E、0x5D};
UINT8 RX_PACK[16]={0};
uint32数据;
void i2cEnableLoopback (i2cBASE-t * i2c);
/*用户代码结束*/
int main (空)
{
/*用户代码开始(3)*/
uint32 buf_size = bsize、i、errNum;
uint8 * t_buff =&TX_Pack[0];
uint8 * r_buff =&RX_Pack[0];
/* i2c 初始化*/
i2cInit();
/*设置 i2c 自有地址*/
i2cSetOwnAdd (i2cREG1、Own_add);
/*启用内部回送*/
i2cEnableLoopback (i2cREG1);
/*启动传输的启动条件*/
i2cSetStart (i2cREG1);
/*发送数据包*/
while (buf_size--)
{
i2cSendByte (i2cREG1、* t_buy++);
/*接收数据包*/
*r_buff ++= i2cReceiveByte (i2cREG1);
asm (" nop");//用于断点
}
errNum = 0;
(i=0;<bsize; i++){
如果(RX_PACK[i]!= RX_PACK[i])
errNum++;
}
/*清除停止条件检测标志*/
i2cClearSCD (i2cREG1);
while (1){};//在 TX-Rx 完成后永远等待。 *
/*用户代码结束*/
返回0;
}
在 RX 缓冲区中,只复制第一个字节。
RX_PACK[16]={0x5A、0x0、0x0、............}
然后代码会在下面的行中被删除
while (((i2c->STR &(UINT32) I2C_RX_INT)== 0U)
{
}/*等待*/
uint8 i2cReceiveByte (i2cBASE-t * i2c)函数内部。
什么可能是问题?
2) 2)请找到所附的快照
"停止条件由器件生成"的含义是什么?
它对编码有何影响?
