工具/软件:Code Composer Studio
大家好、
我目前正在尝试使用 BLE5向 CC2640R2 Launchpad 的简单 BLE 外设示例项目添加 CO2传感器(Cozir LP8)。 我能够从 SensorTag 应用中实现天气传感器(BMP280)、但没有使用具有 Modbus 请求的 UART 的 CO2传感器示例。
我应该实现 Modbus 请求、因此我使用 UART_WRITE 和 UART_READ、但当我使用 UART_READ 函数时出错、没有任何内容写入缓冲区。
我不知道为什么这不起作用、因为我遵循了 uart.h 文件中 UART 通信的每条指令。 我错过了什么吗?
下面是我现在使用的部分内容:
bool sensorLp8Read (uint8_t *数据)
{
uint8_t RawData[49];
uint8_t errData[4];
UART_Handle UART;
UART_Params uartParams;
//初始化 UART 驱动程序。
UART_INIT();
//创建一个数据处理关闭的 UART。
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.baudrate = 9600;
//打开 UART 驱动程序的实例
UART = UART_OPEN (Board_UART0、uartParams);
//请求和响应命令
uint8_t requestCMD[8]={0xFE、//从器件 addr *
0x41、/*函数*/
0x00、
0x80、/*寄存器读取*/
0x01、/*要读取的字节数*/
0x10、/*计算控制*/
0x28、/* CRC LSB *
0x7E、/* CRC MSB *
};
uint8_t readCMD[7]={0xFE、/*从器件地址*/
0x44、/*函数*/
0x00、
0x80、/*寄存器读取*/
0x2C、/*要读取的字节数*/
0x79,/* CRC LSB *// TODO:找到良好的 CRC
0x39、/* CRC MSB *
};
delay_ms (250);
UART_WRITE (UART、&requestCMD、sizeof (requestCMD));
delay_ms (50);
UART_READ (UART、&errData、sizeof (errData));
delay_ms (250);
UART_WRITE (UART、readCMD、7);
delay_ms (250);
UART_READ (UART、&RawData、51);
UART_CLOSE (UART);
DATA[0]= errData[0];
数据[1]= errData[1];
DATA[2]= errData[2];
DATA[3]= errData[3];
Data[4]= RawData[14];
Data[5]= RawData[15];
Data[6]= RawData[16];
Data[7]= RawData[17];
Data[8]= RawData[18];
Data[9]= RawData[19];
返回 true;
}