中级会员
 
- 积分
- 466
- 金钱
- 466
- 注册时间
- 2018-4-26
- 在线时间
- 78 小时
|
发表于 2018-9-5 09:50:08
|
显示全部楼层
楼主你好,我在用你硬件IIC程序的测试程序时候,我用的不是AT芯片,而是其他的I2C芯片,我也是用你的程序测试的,有个问题想请教下,我的寄存器地址和发送(接收)的数据都是16位的,我在你的基础上更改了一下,你看一下这样会不会有什么问题,
u8 Hard_IIC_WriteOneByte(I2C_TypeDef* IICx, uint8_t SlaveAdd, u8 writeAdd, u8 data,u8 * err)
u8 Hard_IIC_WriteOneByte(I2C_TypeDef* IICx, uint8_t SlaveAdd, u16 writeAdd, u16 data ,u8 * err)
u8的更改为u16的了,
I2C_SendData(IICx, WriteAdd); //发送寄存器地址
temp = 0;
//
//EV8
//
while (!I2C_CheckEvent(IICx, I2C_EVENT_MASTER_BYTE_TRANSMITTING))
{
temp++;
if (temp > 800)
{
*err |= 1<<3;
I2C_GenerateSTOP(IICx, ENABLE); //2úéúí£Ö1DÅoÅ
return;
}
}
I2C_SendData(IICx, (WriteAdd>>8)&oxFF); //发送寄存器地址
temp = 0;
//
//EV8
//
while (!I2C_CheckEvent(IICx, I2C_EVENT_MASTER_BYTE_TRANSMITTING))
{
temp++;
if (temp > 800)
{
*err |= 1<<3;
I2C_GenerateSTOP(IICx, ENABLE); //2úéúí£Ö1DÅoÅ
return;
}
}
I2C_SendData(IICx, (WriteAdd&0xFF); //发送寄存器地址
temp = 0;
//
//EV8
//
while (!I2C_CheckEvent(IICx, I2C_EVENT_MASTER_BYTE_TRANSMITTING))
{
temp++;
if (temp > 800)
{
*err |= 1<<3;
I2C_GenerateSTOP(IICx, ENABLE); //2úéúí£Ö1DÅoÅ
return;
}
}
请问我这样完成一个16位的寄存器地址发送有没有问题 |
|