主题中讨论的其他部件:TM4C129DNCPDT,
你好朋友
我正在我的项目中使用ads7924,i2c是我的tm4c129Dncpdt和ADS7924之间的链接,
根据我的说明,我已按照数据表进行配置。
现在的问题是我在i2c上正确获取第一个通道的值,它会因输入而异,但如果我对第二个通道执行相同的操作,它将无法正常工作。
当我将输入更改为信道1时,它也会影响信道2的值,因为我只读取四个信道中的两个,
下面是我 在i2c上的代码。 如果我做的任何事情出错,建议我。
/**** ADC初始化***/
ADC_Channel_init (0x48,0x00,0x80,1);//唤醒模式
ADC_Channel_init (0x48,0x12,0x1C,1);//创建的输入
ADC_Channel_init (0x48,0x00,0xC8,1);//手动扫描模式
它处于3秒循环函数中
ROM_I2CMasterSlaveAddrSet (I2C2_base,slave,false);
ROM_I2CMasterDataPut(I2C2_base, 0x82);
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTREG_SEND_START);
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//指定我们将从从属设备读取
ROM_I2CMasterSlaveAddrSet (I2C2_base,slave,true);
//发送控制字节并从注册表读取我们
//指定
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTREG_receive _START);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
DATA[0]=(uint8_t)ROM_I2CMasterDataSet(I2C2_base);
while (ROM_I2CMasterBusy (I2C2_BASE));
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTRE_receive _CONT);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
Data[1]=(uint8_t) ROM_I2CMasterDataGet (I2C2_BASE);
while (ROM_I2CMasterBusy (I2C2_BASE));
// ROM_SysType.Delay(100);
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTRE_receive _CONT);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
Data[2]=(uint8_t)ROM_I2CMasterDataSet(I2C2_base);
while (ROM_I2CMasterBusy (I2C2_BASE));
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTRE_receive _CONT);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
Data[3]=(uint8_t)ROM_I2CMasterDataSet(I2C2_base);
while (ROM_I2CMasterBusy (I2C2_BASE));
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTRE_receive _CONT);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
DATA[4]=(uint8_t)ROM_I2CMasterDataSet(I2C2_base);
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTRE_receive _CONT);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
Data[5]=(uint8_t)ROM_I2CMasterDataSet(I2C2_base);
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STUSTRE_receive _CONT);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
Data[6]=(uint8_t)ROM_I2CMasterDataSet(I2C2_base);
ROM_I2CMasterControl (I2C2_BASE,I2C_MASTER_CMD_STREBATE_receive);
//等待MCU完成事务
while (!ROM_I2CMasterBusy (I2C2_BASE));
while (ROM_I2CMasterBusy (I2C2_BASE));
//返回从指定寄存器中提取的第一个字节
Data[7]=(uint8_t)ROM_I2CMasterDataSet(I2C2_base);
UARTprintf ("CH1 MSB %x lsb %x - CH2 MSB %x lsb %x - ch3 MSB %x lsb %x lsb %x\r\n",data[0],data[1],data[2],data[3],
数据[3],数据[4],数据[5],数据[6],数据[7]);
ADC_Channel_init (0x48,0x00,0xC8,1);//用于多扫描
此致
哈里什
