This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/LAUNCHXL-CC2640R2:LAUNCHXL-CC2640R2

Guru**** 2589280 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/606031/ccs-launchxl-cc2640r2-launchxl-cc2640r2

器件型号:LAUNCHXL-CC2640R2

工具/软件: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
};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sebastien、

    当您说 UART_Read 无法捕获正确的数据时。 这话什么意思? 是部分退货吗? 什么也没有?

    您提到您已查看 UART.h 中的指导 您是否回顾了 API 指南的"一般行为"部分? 我对您在对 UART_WRITE 和 UART_READ 的调用之间设置延迟的原因很好奇。 在第一次调用 UART_Read 之前、不会捕获从传感器发送的任何内容。

    software-dl.ti.com/.../_u_a_r_t_c_c26_x_x_8h.html
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、RachelP、

    当我说 UART_READ 没有捕获正确的数据时、这是因为函数返回的值与我在示波器上读取的值不匹配。 此外、我在 UART_WRITE 和 UART_READ 的调用之间放置一个延迟、因为它是在传感器数据表中指定的、因此用于计算时间。

    我不知道这是否有帮助、但我只能在使用 UART_MODE_CALLACK 时调用 UART_READ。

    我希望这将帮助您了解我的问题、我将更仔细地查看您发送给我的链接中的信息。

    此致、

    Sebastien