您好!
将 i2c 添加到项目时遇到问题。 当我单独使用 i2c 或 UART 时、一切工作正常。
当我要 将 i2c 初始化为 UART 程序时、问题就会开始。 然后 UART 开始接收不正确的数据。
有效代码:
#include
#include
#include
UART_Handle UART;
UART_Params uartParams;
I2C_Handle i2c;
I2C_Params i2cParams;
PIN_STATE 引脚状态;
PIN_Config pinInitTable[]={
PIN_ID (29)| PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_DRVSTR_MAX、
PIN_TERMINATE
};
void * mainThread (void * arg0)
{
PIN_INIT (pinInitTable);
PIN_OPEN (&pinState、pinInitTable);
Display_printf (display、0、0、"Interrupt init");
Display = Display_open (Display_Type_UART、NULL);
UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readReturnMode = UART_return_full;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.parityType = UART_PAR_even;
uartParams.dataLength = UART_LEN_8;
uartParams.stopbits = UART_STOP_ONE;
uartParams.baudrate = 9600;
UART = UART_OPEN (CONFIG_UART_RS485、uartParams);
// I2C_Params_init (&i2cParams);
// i2cParams.bitrate = I2C_400kHz;
// i2c = I2C_open (CONFIG_I2C_0、&i2cParams);
// if (i2c == NULL){
// while (1);
//}
// struct SD24_CalculatedResults calRes;
浮点温度、humi、pres、alti;
uint8_t i;
while (1){
PIN_setOutputValue (&pinState、PIN_ID (29)、1);
Display_printf (display、0、0、"Power on");
for (i=0;i<5;i++){
uint8_t cmd[8]={0x01、0x03、0x00、0x00、0x00、 0x09、0x85、0xCC};
uint8_t recvBuf[23];
UART_WRITE (UART、cmd、8);
UART_READ (UART、&recvBuf、23);
uint32_t temp_=((recvBuf[7]<< 24)+(recvBuf[8]<< 16)+(recvBuf[5]<< 8)+ recvBuf[6]);
temp =*((float*)&temp_);
uint32_t humi_=((recvBuf[11]<< 24)+(recvBuf[12]<< 16)+(recvBuf[9]<< 8)+ recvBuf[10]);
humi =*((float*)&humi_);
uint32_t pres_=((recvBuf[15]<< 24)+(recvBuf[16]<< 16)+(recvBuf[13]<< 8)+ recvBuf[14]);
Pres =*((float*)&pres_);
uint32_t Alti_=((recvBuf[19]<< 24)+(recvBuf[20]<< 16)+(recvBuf[17]<< 8)+ recvBuf[18]);
alti =*(((float*)&Alti_);
display_printf (display、0、0、"temp =%f C"、temp);
display_printf (display、0、0、"humi =%f %%%%%"、humi);
display_printf (display、0、0、"pres =%f hPa、pres);
display_printf (display、0、0、"Alti =%f m"、Alti);
睡眠(1);
}
PIN_setOutputValue (&pinState、PIN_ID (29)、0);
display_printf (display、0、0、"sleep 5s");
睡眠(5);
}
}
每当我取消注释与 i2c 初始化相关的行时。 UART 开始接收无效数据。
有人有这样的问题吗? 或者他知道如何解决这个问题吗?
提前感谢您提供所有提示