工具/软件:Code Composer Studio
大家好、
我目前正在尝试通过 UART 通信使用 BLE5向 CC2640R2 Launchpad 的简单 BLE 外设示例项目添加 CO2传感器(Cozir LP8)。
我应该实现 Modbus 请求、因此我使用 UART_WRITE 和 UART_READ、但当我使用 UART_READ 函数并且随机写入或没有值写入缓冲器时会出现错误。
我不知道为什么这不起作用,因为我遵循了 uart.h 文件中 UART 通信的每条指令,数据表中给出了 UART 参数。 您可以在下面的屏幕截图中清楚地看到(黄色=发送的数据、蓝色=传感器传输的数据)我的消息传递到器件、而器件的响应是我所期望的。 我不知道为什么 UART_READ 函数无法 捕获正确的数据。 这是因为传感器的答案是2.6V 而不是3.3V 吗? 我错过了什么吗?
下面是我现在使用的部分内容:
bool sensorLp8Read (uint8_t *数据)
{
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、 /*寄存器读取 LSB *
0x80、/*寄存器以读取 MSB *
0x01、/*要读取的字节数*/
0x10、/*计算控制*/
0x28、/* CRC LSB *
0x7E、/* CRC MSB *
};
UART_WRITE (UART、&requestCMD、sizeof (requestCMD));
delay_ms (50);
UART_READ (UART、数据、sizeof (data));
返回 true;
}
下面是引脚配置:
const PIN_Config BoardGpioInitTable[]={
CC2640R2_LAUNCHXL_PIN_RLED | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、 /* LED 最初关闭*/
CC2640R2_LAUNCHXL_PIN_GLED | PIN_GPIO_OUTP_EN | PIN_GPIO_LOW | PIN_PushPull | PIN_DRVSTR_MAX、 /* LED 最初关闭*/
CC2640R2_LAUNCHXL_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_迟滞、 /*按钮为低电平有效*/
CC2640R2_LAUNCHXL_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_迟滞、 /*按钮为低电平有效*/
CC2640R2_LAUNCHXL_SPI_FLASH_CS | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull | PIN_DRVSTR_MIN、 /*外部闪存芯片选择*
CC2640R2_LAUNCHXL_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN、 /*通过调试器反向通道的 UART RX */
CC2640R2_LAUNCHXL_UART_TX | PIN_GPIO_OUTP_EN | PIN_GPIO_HIGH | PIN_PushPull、 /*通过调试器反向通道的 UART TX */
CC2640R2_LAUNCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN、 /* SPI 主器件输出-从器件输入*/
CC2640R2_LAUNCHXL_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN、 /* SPI 主器件输入-从器件输出*/
CC2640R2_LAUNCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN、 /* SPI 时钟*/
PIN_TERMINATE
};