Files
QDAC-firmware/app/jj_param.c

88 lines
2.9 KiB
C
Raw Normal View History

#include "jj_param.h"
#include "./page/page_ui_widget.h"
#include "./page/page.h"
2024-01-16 20:03:21 +08:00
#include "zf_common_headfile.h"
PARAM_INFO Param_Data[DATA_NUM];
soft_iic_info_struct eeprom_param;
TYPE_UNION iic_buffer[DATA_IN_FLASH_NUM];
2024-03-02 16:00:05 +08:00
uint32_t *addre[2];
2024-02-24 15:06:30 +08:00
float data0 = 1.0f;
float data1 = 1.05f;
float data2 = 10.0f;
float data3 = 100.0f;
float data4 = 4.0f;
float data5 = 66.0f;
float data6 = 13.130f;
2024-03-02 16:00:05 +08:00
float data7 = 10.0f;
float data8 = 0.0f;
2024-02-24 15:06:30 +08:00
/**
* @brief
*
*/
void jj_param_eeprom_init(void)
{
soft_iic_init(&eeprom_param, K24C02_DEV_ADDR, K24C02_SOFT_IIC_DELAY, K24C02_SCL_PIN, K24C02_SDA_PIN); // eeprom初始化
PARAM_REG(angle_Kp, &data0, EFLOAT, 1, "an_P:"); // 注冊
PARAM_REG(angle_Ki, &data1, EFLOAT, 1, "an_I:"); // 注冊
PARAM_REG(angle_Kd, &data2, EFLOAT, 1, "an_D:"); // 注冊
PARAM_REG(imgax_Kp, &data3, EFLOAT, 1, "im_P:"); // 注冊
PARAM_REG(imgax_Ki, &data4, EFLOAT, 1, "im_I:"); // 注冊
PARAM_REG(imgax_Kd, &data5, EFLOAT, 1, "im_D:");
2024-03-02 16:00:05 +08:00
PARAM_REG(other , &data6, EFLOAT, 1, "add:");
PARAM_REG(delta_x , &data7, EFLOAT, 2, "delta_x:");
PARAM_REG(delta_y , &data8, EFLOAT, 0, "delta_y:");
2024-02-24 15:06:30 +08:00
jj_param_read(); // 注冊
}
/**
* @brief
*
*/
void jj_param_write(void)
{
2024-01-16 20:03:21 +08:00
for (uint8 i = 0; i < DATA_IN_FLASH_NUM; i++) {
switch (Param_Data[i].type) {
case EFLOAT:
2024-02-24 15:06:30 +08:00
iic_buffer[i].f32 = *((float *)(Param_Data[i].p_data));
break;
case EUINT32:
2024-02-24 15:06:30 +08:00
iic_buffer[i].u32 = *((uint32 *)(Param_Data[i].p_data));
break;
case EINT32:
2024-02-24 15:06:30 +08:00
iic_buffer[i].s32 = *((int32 *)(Param_Data[i].p_data));
break;
default:
break;
}
2024-03-02 16:00:05 +08:00
eep_soft_iic_write_8bit_registers(&eeprom_param, (4 * i) >> 8, (4 * i), (uint8 *)&iic_buffer[i], 4);
2024-01-16 20:03:21 +08:00
system_delay_ms(10);
}
}
/**
2024-02-24 15:06:30 +08:00
* @brief
*
*/
2024-02-24 15:06:30 +08:00
void jj_param_read(void)
{
for (uint8 i = 0; i < DATA_IN_FLASH_NUM; i++) {
2024-02-24 15:06:30 +08:00
2024-03-02 16:00:05 +08:00
eep_soft_iic_read_8bit_registers(&eeprom_param, (4 * i) >> 8, (4 * i), (uint8 *)&iic_buffer[i], 4);
switch (Param_Data[i].type) {
case EFLOAT:
2024-02-24 15:06:30 +08:00
*((float *)(Param_Data[i].p_data)) =
iic_buffer[i].f32;
break;
case EUINT32:
2024-02-24 15:06:30 +08:00
*((uint32 *)(Param_Data[i].p_data)) =
iic_buffer[i].u32;
break;
case EINT32:
2024-02-24 15:06:30 +08:00
*((int32 *)(Param_Data[i].p_data)) =
iic_buffer[i].s32;
break;
default:
break;
}
2024-03-02 16:00:05 +08:00
system_delay_ms(10);
}
}