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.

[参考译文] EVM430-F6736:请求校准值问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1522125/evm430-f6736-requesting-calibration-values-problem

器件型号:EVM430-F6736

工具/软件:

下午好!

我希望这篇文章能很好地找到您

我使用的是 EVM430F6736、我将尝试通过 UART 使用 ESP32向智能仪表发送十六进制命令、来手动读取计算值。

我之前使用过这种技术来读取电气参数值(Vrms、IRMS...) 它工作正常(因此接线和外围设备运行良好)。

但是、当我更改命令以读取 EVM430中的现有校准值时、我没有收到预期的结果。

我发送了以下命令:

0x550xAA0x050x04、0x03、 0x000x070x00

然而我收到了:( a.k.a 收到的 UART 消息是)

0x550xAA0x050x04、0x03、 0x010x08、0x00

我现在将提供用于发送和日志的完整任务(PS:我将使用 Esspressif IDE 对 ESP32编程)

代码:

/**

*@用于校准有功功率的简短任务。 这项任务不是最终任务的一部分

*运行代码,但将保留在这里,以供将来可能需要的校准

*

*@param arg 任务参数(未使用)

*/

void evm_calibration_task (void * arg)

uart_event_t 事件;

//分配用于接收和处理数据的缓冲区

uint8_t* rx_buffer =(uint8_t*) malloc (RX_BUF_SIZE + 1);

uint16_t rx_buffer_length;

//请求数据的命令序列:将 EVM430设置为"激活"状态

uint8_t TX_FLAG_COMMAND[8]=0x550xAA、0x05、0x04、0x03、 0x000x070x00};

静态常量字符*TX_TASK_TAG ="evm_Calibration_task"

ESP_LOG_LEVEL_SET (TX_TASK_TAG、ESP_LOG_INFO);

esp_Logi (tx_task_tag、"开始校准任务");

//发送命令的每个字节并在字节之间进行延迟

对于(int i = 0;i < 8;i++)

sendData (tx_task_tag、tx_flag_command[i]);

vTaskDelay (1/portTICK_PERIOD_MS);

}

while (1)

if (xQueueReceive (g_uart_queue、(void *)&event、4000/ portTICK_period_MS))

RX_BUFFER_LENGTH= UART_READ_BYTES (UART_NUM_1、RX_BUFFER、RX_BUF_SIZE、500/ portTICK_PERIOD_MS);

esp_log_buffer_HEXDUMP (tx_task_tag、rx_buffer、rx_buffer_length、esp_log_info);

esp_Logi (tx_task_tag、"Calibration values Received! 长度:%d"、rx_buffer_length);

}其他

esp_Logi (tx_task_tag、"No values received");

}

}

vTaskDelete(NULL)//完成后删除此任务

}

 日志:


I (7238) EVM_Calibration_task:开始校准任务
i (7248) EVM_Calibration_task:写入1个字节
i (7248) EVM_Calibration_task:写入1个字节
i (7258) EVM_Calibration_task:写入1个字节
i (7258) EVM_Calibration_task:写入1个字节
i (7268) EVM_Calibration_task:写入1个字节
i (7268) EVM_Calibration_task:写入1个字节
i (7278) EVM_Calibration_task:写入1个字节
i (7278) EVM_Calibration_task:写入1个字节
i (7288) main_task:从 app_main ()返回
i (7788) EVM_Calibration_task:0x3ffd9bc4 55 aa 05 04 03 01 08 00 |u. |
I (7788) EVM_Calibration_task:收到校准值! 长度:8
I (11788) EVM_Calibration_task:未接收到值

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

    好的,事实证明,命令是错误的:正确的一个是:  

    0x550xAA0x060x04、0x03、 0x01、0x010x090x00