Files
pwm32e_pro/project/example/2.4g/RF24_ADV/app/driver/radar.c
T
moyuhai 41a602f89c V1.0
2026-06-09 16:39:17 +08:00

122 lines
2.1 KiB
C

#include "xc_hal.h"
#include "uart.h"
#include "radar.h"
uint8_t rad_txbuff[16] = {0};
uint8_t rad_rxbuff[16] = {0};
uint8_t rad_flag = 1;
uint8_t rad_ccc = 1;
uint16_t rad_aaa = 100;
uint32_t rad_bbb = 30;
static uint8_t cmd_setval(uint32_t setval, uint8_t save)
{
rad_txbuff[0] = 0xA1;
rad_txbuff[1] = 0x07;
rad_txbuff[2] = setval >> 8;
rad_txbuff[3] = setval & 0xFF;
rad_txbuff[4] = 0x00;
rad_txbuff[5] = 0x02;
rad_txbuff[6] = 0x00;
rad_txbuff[7] = 0x00;
rad_txbuff[8] = (save!=0)?1:0;
return uart_trx(rad_txbuff, rad_rxbuff);
}
static uint8_t cmd_getval(uint32_t *getval)
{
rad_txbuff[0] = 0xA2;
rad_txbuff[1] = 0x00;
if(uart_trx(rad_txbuff, rad_rxbuff))
{
*getval = rad_rxbuff[2]<<8|rad_rxbuff[3];
return 1;
}
return 0;
}
static uint8_t cmd_setflag(uint8_t flag)
{
rad_txbuff[0] = 0xA3;
rad_txbuff[1] = 0x01;
rad_txbuff[2] = flag;
return uart_trx(rad_txbuff, rad_rxbuff);
}
static uint8_t cmd_getflag(uint8_t *data)
{
rad_txbuff[0] = 0xA4;
rad_txbuff[1] = 0x00;
if(uart_trx(rad_txbuff, rad_rxbuff))
{
*data = rad_rxbuff[2];
return 1;
}
return 0;
}
//À×´ï³õʼ»¯
uint8_t radar_init(uint32_t setbase, uint16_t setper, uint8_t save)
{
uint8_t enable = 0;
uint32_t setval = 0;
rad_flag = save;
if(setper & 0x8000)
{
enable = 0;
setval = 255;
}
else
{
enable = 1;
setval = (uint64_t)(setbase * setper) / 100;
if(setval > 255) setval = 255;
}
if(!cmd_setflag(enable))
{
return 0;
}
rad_ccc = enable;
delay_ms(40);
if(!cmd_setval(setval, save))
{
return 0;
}
rad_bbb = setval;
rad_aaa = setper;
return 1;
}
uint8_t radar_setbase(uint32_t setbase)
{
return radar_init(setbase, rad_aaa, rad_flag);
}
void radar_readval(uint16_t *data)
{
data[0] = (hal_rad_get())?1023:0;
data[1] = data[0];
}
void radar_getper(uint8_t *data)
{
data[0] = rad_aaa & 0xFF;
data[1] = rad_aaa >> 8;
}
void radar_getcfg(uint8_t *data)
{
cmd_getval(&rad_bbb);
cmd_getflag(&rad_ccc);
data[0] = rad_ccc;
data[1] = (rad_bbb >> 0) & 0xFF;
data[2] = (rad_bbb >> 8) & 0xFF;
data[3] = (rad_bbb >> 16) & 0xFF;
data[4] = (rad_bbb >> 24) & 0xFF;
}