You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.7 KiB
104 lines
2.7 KiB
2 days ago
|
/*
|
||
|
* msp_T_F4.c
|
||
|
*
|
||
|
* Created on: Jun 18, 2025
|
||
|
* Author: akeguo
|
||
|
*/
|
||
|
#include "msp_T_F4.h"
|
||
|
#include "BHBF_ROBOT.h"
|
||
|
#include "string.h"
|
||
|
|
||
|
char Is_T_F4_All_Button_Reset = 0;
|
||
|
void read_T_F4_Data(void);
|
||
|
void Write_T_F4_Data(void);
|
||
|
void decode_T_F4(uint8_t *buffer, uint16_t length);
|
||
|
DispacherController *T_F4_dispacherController;
|
||
|
|
||
|
T_F4_Value Current_T_F4_Value;
|
||
|
T_F4_Value_2 Current_T_F4_Value_2;
|
||
|
struct UARTHandler *T_F4_Remote_Controller_UART_Handler;
|
||
|
|
||
|
void T_F4_Remote_Controller_intialize(struct UARTHandler *Handler)
|
||
|
{
|
||
|
|
||
|
T_F4_Remote_Controller_UART_Handler = Handler;
|
||
|
T_F4_Remote_Controller_UART_Handler->Wait_time = 20; //等待10ms 最低不要低于4;
|
||
|
T_F4_dispacherController = Handler->dispacherController;
|
||
|
T_F4_dispacherController->DispacherCallTime = 200;
|
||
|
T_F4_dispacherController->Dispacher_Enable = 1;
|
||
|
T_F4_dispacherController->Add_Dispatcher_List(T_F4_dispacherController,
|
||
|
read_T_F4_Data);
|
||
|
T_F4_dispacherController->Add_Dispatcher_List(T_F4_dispacherController,
|
||
|
Write_T_F4_Data);
|
||
|
|
||
|
// HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,
|
||
|
// "T_F4_Remote", 0, ComError_T_F4_Remote);
|
||
|
LOG(DL_ERROR, "angle encoder decoding failed");
|
||
|
|
||
|
}
|
||
|
|
||
|
uint8_t Write_T_F4[10];
|
||
|
uint16_t Data[5];
|
||
|
uint8_t Flag;
|
||
|
void read_T_F4_Data(void)
|
||
|
{
|
||
|
|
||
|
LOGFF(DL_ERROR, "read data from DeChi");
|
||
|
|
||
|
T_F4_Remote_Controller_UART_Handler->UART_Decode = decode_T_F4;
|
||
|
|
||
|
MB_ReadInputReg(&T_F4_Remote_Controller_UART_Handler->Tx_Buf,
|
||
|
&T_F4_Remote_Controller_UART_Handler->TxCount, 1, 0, 6); //addr 3 reg 0 读取6 个
|
||
|
T_F4_Remote_Controller_UART_Handler->UART_Tx(
|
||
|
T_F4_Remote_Controller_UART_Handler);
|
||
|
}
|
||
|
|
||
|
void Write_T_F4_Data(void)
|
||
|
{
|
||
|
|
||
|
Data[0] = GV.Left_Compensation * 100;
|
||
|
Data[1] = GV.Right_Compensation * 100;
|
||
|
Data[2] = abs(GV.Robot_Angle.RF_Angle_Roll);
|
||
|
Data[3] = GV.Robot_Speed_mpm * 100;
|
||
|
Data[4] = abs(GV.Robot_PaintThickness);
|
||
|
for (int i = 0; i < 5; i++)
|
||
|
{
|
||
|
Write_T_F4[2*i] = ((Data[i] / 256));//高位
|
||
|
Write_T_F4[2*i+1] = ((Data[i] % 256));//低维
|
||
|
}
|
||
|
T_F4_Remote_Controller_UART_Handler->UART_Decode = NULL;
|
||
|
|
||
|
MB_WriteNumHoldingReg(&T_F4_Remote_Controller_UART_Handler->Tx_Buf,
|
||
|
&T_F4_Remote_Controller_UART_Handler->TxCount, 1, 5, 5, &Write_T_F4);
|
||
|
|
||
|
|
||
|
T_F4_Remote_Controller_UART_Handler->UART_Tx(
|
||
|
T_F4_Remote_Controller_UART_Handler);
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
uint16_t Decoded_Reg_Value[6];
|
||
|
void decode_T_F4(uint8_t *buffer, uint16_t length)
|
||
|
{
|
||
|
uint16_t crc_check = ((buffer[length - 1] << 8) | buffer[length - 2]);
|
||
|
/* CRC 校验正确 */
|
||
|
if (buffer[0] == 0x01 && buffer[1] == 0x04 && crc_check == MB_CRC16(buffer, length - 2))
|
||
|
{
|
||
|
memcpy(&Current_T_F4_Value, &buffer[3], 6 * 2);
|
||
|
|
||
|
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,
|
||
|
"T_F4_Remote", 1);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
LOGFF(DL_ERROR, "DeChi decoding failed");
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|