| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include "app/nv_storage.h"
- #include "bsp/fmc_flash.h"
- #include "libs/crc16.h"
- static void mc_config_default(void);
- static mc_config_t g_config;
- void config_set_hall_offset(s16 offset) {
- g_config.hall_offset = offset;
- }
- mc_config_t *mc_config_get(void) {
- return &g_config;
- }
- void store_config(void) {
- u16 crc = crc16_get((u8 *)&g_config, sizeof(g_config) - 2);
- g_config.crc16 = crc;
- fmc_write_data(0, (u8 *)&g_config, sizeof(g_config));
- fmc_write_data(1, (u8 *)&g_config, sizeof(g_config));
- }
- void restore_config(void) {
- fmc_read_data(0, (u8 *)&g_config, sizeof(g_config));
- u16 crc0 = crc16_get((u8 *)&g_config, sizeof(g_config) - 2);
- if (crc0 != g_config.crc16) {
- fmc_read_data(1, (u8 *)&g_config, sizeof(g_config));
- crc0 = crc16_get((u8 *)&g_config, sizeof(g_config) - 2);
- if (crc0 != g_config.crc16) {
- mc_config_default();
- return;
- }
- fmc_write_data(0, (u8 *)&g_config, sizeof(g_config));
- }else {
- fmc_write_data(1, (u8 *)&g_config, sizeof(g_config));
- }
- }
- static void mc_config_default(void) {
- g_config.hall_offset = 0;
- for (int i = 0; i < 3; i++) {
- g_config.phase_op[i].op_i_k = 1;
- g_config.phase_op[i].op_i_offset = 0;;
- }
- }
|