diff --git a/vd960Loop/utilities/at32f421_freertos_demo/src/main.c b/vd960Loop/utilities/at32f421_freertos_demo/src/main.c index 55cb91a..a942f28 100644 --- a/vd960Loop/utilities/at32f421_freertos_demo/src/main.c +++ b/vd960Loop/utilities/at32f421_freertos_demo/src/main.c @@ -445,9 +445,14 @@ void uart_report_packet_loop_acs(uint8_t flag) g_pkg_uart_report.pkg[i++] = (g_loop_cng_info.loop_cng[j].loopFreq_Level << 6) | (1 << 4) | (unit->loop_SensLevel & 0x03); g_pkg_uart_report.pkg[i++] = 0 | ((!unit->loop_LOOP_OK) << 3) | (unit->loop_VD_FLAG << 2) | (_misc); - g_pkg_uart_report.pkg[i++] = (uint8_t)(unit->loop_CAPVD & 0xFF); - g_pkg_uart_report.pkg[i++] = (uint8_t)((unit->loop_CAPVD >> 8) & 0xFF); - g_pkg_uart_report.pkg[i++] = (uint8_t)((unit->loop_CAPVD >> 16) & 0xFF); + // 上报频率 = sclk_freq * input_div * LPCNT / CAPVD (先乘后除避免精度损失) + uint32_t _frequent = 0; + if (unit->loop_LPCNT > 0 && unit->loop_CAPVD > 0) { + _frequent = (uint32_t)((uint64_t)g_crm_clocks_freq_struct.sclk_freq * g_input_div * unit->loop_LPCNT / unit->loop_CAPVD); + } + g_pkg_uart_report.pkg[i++] = (uint8_t)(_frequent & 0xFF); + g_pkg_uart_report.pkg[i++] = (uint8_t)((_frequent >> 8) & 0xFF); + g_pkg_uart_report.pkg[i++] = (uint8_t)((_frequent >> 16) & 0xFF); uint32_t variation = (unit->loop_Origin > unit->loop_CAPVD) ? (unit->loop_Origin - unit->loop_CAPVD) : (unit->loop_CAPVD - unit->loop_Origin); @@ -759,9 +764,15 @@ void manage_dbn_ble_default(uint8_t *pkg, uint8_t len) tmp_ble_buf[i++] = (_cng->output_mode) | (_cng->loopSafe_Timeout << 3); tmp_ble_buf[i++] = _cng->exist_mode; tmp_ble_buf[i++] = _cng->direction_mode; - tmp_ble_buf[i++] = (uint8_t)(g_loop_states.loop_unit[j].loop_CAPVD & 0xFF); - tmp_ble_buf[i++] = (uint8_t)((g_loop_states.loop_unit[j].loop_CAPVD >> 8) & 0xFF); - tmp_ble_buf[i++] = (uint8_t)((g_loop_states.loop_unit[j].loop_CAPVD >> 16) & 0xFF); + // 上报频率 = sclk_freq * input_div * LPCNT / CAPVD (先乘后除避免精度损失) + uint32_t _freq = 0; + if (g_loop_states.loop_unit[j].loop_LPCNT > 0 && g_loop_states.loop_unit[j].loop_CAPVD > 0) { + _freq = (uint32_t)((uint64_t)g_crm_clocks_freq_struct.sclk_freq * g_input_div + * g_loop_states.loop_unit[j].loop_LPCNT / g_loop_states.loop_unit[j].loop_CAPVD); + } + tmp_ble_buf[i++] = (uint8_t)(_freq & 0xFF); + tmp_ble_buf[i++] = (uint8_t)((_freq >> 8) & 0xFF); + tmp_ble_buf[i++] = (uint8_t)((_freq >> 16) & 0xFF); _cng++; }