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/CC2640R2F:CC2640R2

Guru**** 2589280 points


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

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

器件型号:CC2640R2F

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

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

    您是否正确配置了 IOS? 您是否在引脚上看到任何活动?

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

    IOS 是什么意思? 我从 UART_WRITE 中得到一个答案、告诉我它发送正确的字节数、但 UART_READ 始终返回255个读取的字节、而我只要求它读取7个字节... 我使用示波器进行了检查、我可以看到该位通过引脚。

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

    我能够使用示波器测试 Tx 引脚和 Rx 引脚、我可以清楚地看到发送的消息对应于我尝试发送的数据、并且器件会向我发送正确的答案。 唯一的问题是 UART_READ 函数中的缓冲区传递没有在 Rx 引脚上传递的数据。

    您能帮我还是请我看另一个主题吗?
    谢谢

    SEB