在线时间227 小时
UID261364
注册时间2020-5-12
NXP金币0
该用户从未签到
金牌会员
 
- 积分
- 1367
- 最后登录
- 2024-12-31
|
本帖最后由 chuandaoxy 于 2022-1-26 11:53 编辑
在网上找到zlg的 drive 包,进行测试对8574的读写测试,反复测试都没有点亮led
8574的a0-a1-a2是这样设定的,1-0-0 根据手册物理地址是0x21, 写寄存器是0x42
确认测试板有电,物理连接没有问题,上拉电阻也有,可是led就是不亮,用的是812硬件i2c
大家帮忙看看那里问题,谢谢
void I2CWriteByte (uint32_t uiSubAddr, uint8_t ucData)
//void I2CWriteByte (uint8_t ucData)
{
while (!(LPC_I2C->STAT & 1)); /* 等待空闲 */
LPC_I2C->MSTDAT = I2C_SLV_WRITE;
LPC_I2C->MSTCTL = (1 << 1) | (1 << 0); /*·发送起始位 */
while (!(LPC_I2C->STAT & 1)); /* 等待操作 */
LPC_I2C->MSTDAT = uiSubAddr;
LPC_I2C->MSTCTL = (1 << 0); /* 发送字地址 */
while (!(LPC_I2C->STAT & 1)); /* 等待操作 */
LPC_I2C->MSTDAT = ucData;
LPC_I2C->MSTCTL = (1 << 0); /* 发数据 */
while (!(LPC_I2C->STAT & 1)); /* 等待操作 */
LPC_I2C->MSTCTL = (1 << 2) | (1 << 0); /* 发送停止 */
}
int main (void)
{
// uint8_t i;
SystemInit();
I2CInit();
while (1) {
I2CWriteByte(0x42,0x00);
myDelay(5000);
I2CWriteByte(0x42,0xff);
myDelay(5000);
}
}
最佳答案
本帖最后由 安 于 2022-1-26 15:56 编辑
楼主,我看应该是地址不对的问题,应该用0x42。如果测试还是不行,SDA和SCL有没有接上拉电阻。
|
|