feat: 新增激光定时关闭与姿态角持续输出测试功能,编码转UTF-8
1. 激光定时自动关闭:默认10分钟,laser on启动计时,超时自动关并上报 2. laser time <min>可配置定时分钟数,0=关闭定时 3. att on/off持续输出姿态角(Pitch/Roll/Yaw),不注册不低功耗 4. 20个源文件从GB2312编码转为UTF-8 with BOM
This commit is contained in:
+27
-27
@@ -1,23 +1,23 @@
|
||||
/************************************************************************************************
|
||||
* 程序版本:V3.0
|
||||
* 程序日期:2022-11-3
|
||||
* 程序作者:
|
||||
/************************************************************************************************
|
||||
* 程序版本:V3.0
|
||||
* 程序日期:2022-11-3
|
||||
* 程序作者:
|
||||
************************************************************************************************/
|
||||
#include "Imu.h"
|
||||
#include "main.h"
|
||||
|
||||
#define Kp_New 0.9f //互补滤波当前数据的权重
|
||||
#define Kp_Old 0.1f //互补滤波历史数据的权重
|
||||
#define Acc_Gain 0.0001220f //加速度变成G (初始化加速度满量程-+4g LSBa = 2*4/65535.0)
|
||||
#define Gyro_Gain 0.0609756f //角速度变成度 (初始化陀螺仪满量程+-2000 LSBg = 2*2000/65535.0)
|
||||
#define Gyro_Gr 0.0010641f //角速度变成弧度(3.1415/180 * LSBg)
|
||||
#define Kp_New 0.9f //互补滤波当前数据的权重
|
||||
#define Kp_Old 0.1f //互补滤波历史数据的权重
|
||||
#define Acc_Gain 0.0001220f //加速度变成G (初始化加速度满量程-+4g LSBa = 2*4/65535.0)
|
||||
#define Gyro_Gain 0.0609756f //角速度变成度 (初始化陀螺仪满量程+-2000 LSBg = 2*2000/65535.0)
|
||||
#define Gyro_Gr 0.0010641f //角速度变成弧度(3.1415/180 * LSBg)
|
||||
|
||||
//kp=ki=0 就是完全相信陀螺仪
|
||||
//kp=ki=0 就是完全相信陀螺仪
|
||||
#define Kp 1.5f // proportional gain governs rate of convergence to accelerometer/magnetometer
|
||||
//比例增益控制加速度计,磁力计的收敛速率
|
||||
//比例增益控制加速度计,磁力计的收敛速率
|
||||
#define Ki 0.005f // integral gain governs rate of convergence of gyroscope biases
|
||||
//积分增益控制陀螺偏差的收敛速度
|
||||
#define halfT 0.005f // half the sample period 采样周期的一半
|
||||
//积分增益控制陀螺偏差的收敛速度
|
||||
#define halfT 0.005f // half the sample period 采样周期的一半
|
||||
|
||||
static volatile float q0 = 1, q1 = 0, q2 = 0, q3 = 0; // quaternion elements representing the estimated orientation
|
||||
static volatile float exInt = 0, eyInt = 0, ezInt = 0; // scaled integral error
|
||||
@@ -29,7 +29,7 @@ static float MedianValue(float *value_buf, unsigned int size)
|
||||
unsigned int i,j;
|
||||
float temp;
|
||||
|
||||
//排序采用冒泡法
|
||||
//排序采用冒泡法
|
||||
for (j=0;j<=size;j++){
|
||||
for (i=0;i<=size-j;i++){
|
||||
if (value_buf[i] > value_buf[i+1]){
|
||||
@@ -194,48 +194,48 @@ static void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az
|
||||
if(ax*ay*az==0)
|
||||
return;
|
||||
|
||||
//加速度计<测量>的重力加速度向量(机体坐标系)
|
||||
//加速度计<测量>的重力加速度向量(机体坐标系)
|
||||
norm = invSqrt(ax*ax + ay*ay + az*az);
|
||||
ax = ax * norm;
|
||||
ay = ay * norm;
|
||||
az = az * norm;
|
||||
// printf("ax=%0.2f ay=%0.2f az=%0.2f\r\n",ax,ay,az);
|
||||
|
||||
//陀螺仪积分<估计>重力向量(机体坐标系)
|
||||
vx = 2*(q1q3 - q0q2); //矩阵(3,1)项
|
||||
vy = 2*(q0q1 + q2q3); //矩阵(3,2)项
|
||||
vz = q0q0 - q1q1 - q2q2 + q3q3 ; //矩阵(3,3)项
|
||||
//陀螺仪积分<估计>重力向量(机体坐标系)
|
||||
vx = 2*(q1q3 - q0q2); //矩阵(3,1)项
|
||||
vy = 2*(q0q1 + q2q3); //矩阵(3,2)项
|
||||
vz = q0q0 - q1q1 - q2q2 + q3q3 ; //矩阵(3,3)项
|
||||
|
||||
|
||||
//向量叉乘所得的值
|
||||
//向量叉乘所得的值
|
||||
ex = (ay*vz - az*vy);
|
||||
ey = (az*vx - ax*vz);
|
||||
ez = (ax*vy - ay*vx);
|
||||
|
||||
//用上面求出误差进行积分
|
||||
//用上面求出误差进行积分
|
||||
exInt = exInt + ex * Ki;
|
||||
eyInt = eyInt + ey * Ki;
|
||||
ezInt = ezInt + ez * Ki;
|
||||
|
||||
//将误差PI后补偿到陀螺仪
|
||||
//将误差PI后补偿到陀螺仪
|
||||
gx = gx + Kp*ex + exInt;
|
||||
gy = gy + Kp*ey + eyInt;
|
||||
gz = gz + Kp*ez + ezInt;//这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减
|
||||
gz = gz + Kp*ez + ezInt;//这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减
|
||||
|
||||
//四元素的微分方程
|
||||
//四元素的微分方程
|
||||
q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
|
||||
q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
|
||||
q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
|
||||
q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;
|
||||
|
||||
//单位化四元数
|
||||
//单位化四元数
|
||||
norm = invSqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
|
||||
q0 = q0 * norm;
|
||||
q1 = q1 * norm;
|
||||
q2 = q2 * norm;
|
||||
q3 = q3 * norm;
|
||||
|
||||
// 矩阵表达式
|
||||
// 矩阵表达式
|
||||
// matrix[0] = q0q0 + q1q1 - q2q2 - q3q3; // 11
|
||||
// matrix[1] = 2.f * (q1q2 + q0q3); // 12
|
||||
// matrix[2] = 2.f * (q1q3 - q0q2); // 13
|
||||
@@ -246,7 +246,7 @@ static void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az
|
||||
// matrix[7] = 2.f * (q2q3 - q0q1); // 32
|
||||
// matrix[8] = q0q0 - q1q1 - q2q2 + q3q3; // 33
|
||||
|
||||
//下一步是四元数转换成欧拉角(Z->Y->X)
|
||||
//下一步是四元数转换成欧拉角(Z->Y->X)
|
||||
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -1,17 +1,17 @@
|
||||
#ifndef _IMU_H_
|
||||
#ifndef _IMU_H_
|
||||
#define _IMU_H_
|
||||
#include <math.h>
|
||||
|
||||
#define PI 3.14159265358979323846f
|
||||
#define RAD_TO_DEG 57.2957795 // 弧度到度的转换系数
|
||||
#define DEG_TO_RAD 0.0174533 // 度到弧度的转换系数
|
||||
#define RAD_TO_DEG 57.2957795 // 弧度到度的转换系数
|
||||
#define DEG_TO_RAD 0.0174533 // 度到弧度的转换系数
|
||||
|
||||
// 定义欧拉角结构体
|
||||
// 定义欧拉角结构体
|
||||
typedef struct {
|
||||
volatile float roll, pitch, yaw;//弧度
|
||||
volatile float roll, pitch, yaw;//弧度
|
||||
}Rad_T, *RadDp;
|
||||
typedef struct {
|
||||
volatile float roll, pitch, yaw;//角度
|
||||
volatile float roll, pitch, yaw;//角度
|
||||
}Deg_T, *DegDp;
|
||||
|
||||
#define Imu_AccFilterSize 10
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "sx127x.h"
|
||||
#include "sx127x.h"
|
||||
#include "ddl.h"
|
||||
#include "UartDebug.h"
|
||||
|
||||
@@ -271,7 +271,7 @@ void Sx1276LoRaEnterRx(void)
|
||||
uint8_t temp;
|
||||
SX1276Read(REG_LR_IRQFLAGS, &temp);
|
||||
|
||||
//设置接收模式
|
||||
//设置接收模式
|
||||
LORA_ANTRXEN();
|
||||
}
|
||||
|
||||
@@ -314,17 +314,17 @@ void Sx1276LoRaInit(void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen))
|
||||
//SpreadingFactor
|
||||
if( LoRaPara.SpreadFactor == SX1276_SF_64){
|
||||
SX1276LoRaSetNbTrigPeaks(5);
|
||||
SX1276LoRaSetLowDatarateOptimize(TRUE); //低数据速率设置
|
||||
SX1276LoRaSetLowDatarateOptimize(TRUE); //低数据速率设置
|
||||
}
|
||||
else{
|
||||
SX1276LoRaSetNbTrigPeaks(3);
|
||||
SX1276LoRaSetLowDatarateOptimize(FALSE); //低数据速率设置
|
||||
SX1276LoRaSetLowDatarateOptimize(FALSE); //低数据速率设置
|
||||
}
|
||||
LoRaPara.RegBuff.RegModemConfig2 = (LoRaPara.RegBuff.RegModemConfig2 & RFLR_MODEMCONFIG2_SF_MASK ) | LoRaPara.SpreadFactor;
|
||||
//PacketCrcOn
|
||||
LoRaPara.RegBuff.RegModemConfig2 = (LoRaPara.RegBuff.RegModemConfig2 & RFLR_MODEMCONFIG2_RXPAYLOADCRC_MASK ) | SX1276_CRC_ON; //SX1276_CRC_OFF
|
||||
|
||||
//验证寄存器操作是否成功
|
||||
//验证寄存器操作是否成功
|
||||
SX1276Write(REG_LR_MODEMCONFIG2, LoRaPara.RegBuff.RegModemConfig2);
|
||||
uint8_t Config2 = 0;
|
||||
SX1276Read(REG_LR_MODEMCONFIG2, &Config2);
|
||||
@@ -425,7 +425,7 @@ void Sx1276LoRaLoopHandler(void)
|
||||
void Sx1276LoRaSendBuffer(uint8_t* pucBuff, uint8_t ucLen)
|
||||
{
|
||||
|
||||
//设置发送模式
|
||||
//设置发送模式
|
||||
LORA_ANTTXEN();
|
||||
|
||||
LoRaPara.State = SX1276_BUSY;
|
||||
@@ -473,8 +473,8 @@ void Sx1276LoRaWakeup(void)
|
||||
}
|
||||
|
||||
////////////////////////////////////////
|
||||
//配置本层参数的函数
|
||||
//频道表
|
||||
//配置本层参数的函数
|
||||
//频道表
|
||||
const uint32_t gdwSx1276ChannelTbl[SX1276_CHANNEL_MAX]={
|
||||
FREQ_CENT-FREQ_DEV*8, FREQ_CENT-FREQ_DEV*7, FREQ_CENT-FREQ_DEV*6, FREQ_CENT-FREQ_DEV*5,
|
||||
FREQ_CENT-FREQ_DEV*4, FREQ_CENT-FREQ_DEV*3, FREQ_CENT-FREQ_DEV*2, FREQ_CENT-FREQ_DEV*1,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include <string.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
@@ -62,24 +62,24 @@ void vcom_Send( char *format, ... )
|
||||
|
||||
void vcom_Print(uint8_t sLen)
|
||||
{
|
||||
// 定义一个字符指针CurChar
|
||||
// 定义一个字符指针CurChar
|
||||
char* CurChar;
|
||||
// 初始化ir
|
||||
// 初始化ir
|
||||
ir = 0;
|
||||
// 当ir小于sLen时,循环执行
|
||||
// 当ir小于sLen时,循环执行
|
||||
while(ir < sLen)
|
||||
{
|
||||
// 获取字符指针CurChar
|
||||
// 获取字符指针CurChar
|
||||
CurChar = &buff[ir++];
|
||||
// 调用DebugUartSend函数,发送CurChar指向的字符,次数为1
|
||||
// 调用DebugUartSend函数,发送CurChar指向的字符,次数为1
|
||||
DBGUartSend((uint8_t*)CurChar, 1);
|
||||
}
|
||||
}
|
||||
|
||||
// 定义一个函数vcom_Send2,用于发送字符串
|
||||
// 定义一个函数vcom_Send2,用于发送字符串
|
||||
void vcom_Send2(uint8_t *sData, uint16_t len)
|
||||
{
|
||||
// 遍历sData,将每个元素发送到DebugUartSend
|
||||
// 遍历sData,将每个元素发送到DebugUartSend
|
||||
for(int i = 0; i < len; i++) {
|
||||
DBGUartSendByte(sData[i]);
|
||||
}
|
||||
@@ -94,7 +94,7 @@ void DebugLoopHandler(void)
|
||||
return;
|
||||
|
||||
//for(argv[argc] = strtok(RxBuff, " '\r'"); argv[argc] != NULL; argv[++argc] = strtok(NULL, " '\r'"));
|
||||
// 解析字符串,将参数放入argv数组中
|
||||
// 解析字符串,将参数放入argv数组中
|
||||
argp = strtok(RxBuff, " ");
|
||||
for(int i = 0; i < 10; i++) {
|
||||
if(argp != NULL) {
|
||||
@@ -107,19 +107,19 @@ void DebugLoopHandler(void)
|
||||
}
|
||||
}
|
||||
|
||||
// 获取第一个参数,并将其赋值给argp
|
||||
// 获取第一个参数,并将其赋值给argp
|
||||
argp = strtok(argv[argc], "'\r'");
|
||||
// 如果argp不为空,则将argp的值赋值给argv[argc],并将argc加1
|
||||
// 如果argp不为空,则将argp的值赋值给argv[argc],并将argc加1
|
||||
if(argp != NULL) {
|
||||
argv[argc++] = argp;
|
||||
}
|
||||
// 否则,将RxLen设置为0,并返回
|
||||
// 否则,将RxLen设置为0,并返回
|
||||
else {
|
||||
RxLen = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// 遍历DebugFun数组,查找argv[0]是否与DBGCmd匹配,若匹配则调用DBGExec函数
|
||||
// 遍历DebugFun数组,查找argv[0]是否与DBGCmd匹配,若匹配则调用DBGExec函数
|
||||
for(int i = 0; i < DEBUG_CMD_CNT; i++) {
|
||||
if(strcmp(argv[0], DebugFun[i].DBGCmd) == 0)
|
||||
DebugFun[i].DBGExec(argc, argv);
|
||||
@@ -129,45 +129,45 @@ void DebugLoopHandler(void)
|
||||
RxLen = 0;
|
||||
}
|
||||
|
||||
// 函数:Debug1mSRoutine
|
||||
// 功能:1ms调试时钟routine
|
||||
// 函数:Debug1mSRoutine
|
||||
// 功能:1ms调试时钟routine
|
||||
void Debug1mSRoutine(void)
|
||||
{
|
||||
// 如果1ms调试时钟计数器大于0
|
||||
// 如果1ms调试时钟计数器大于0
|
||||
if(RxRevTimeOutCnt > 0)
|
||||
// 1ms调试时钟计数器减1
|
||||
// 1ms调试时钟计数器减1
|
||||
RxRevTimeOutCnt--;
|
||||
}
|
||||
|
||||
// 定义函数DebugUartIRQ,用于处理串口接收中断
|
||||
// 定义函数DebugUartIRQ,用于处理串口接收中断
|
||||
void DebugUartIRQ(uint8_t Data)
|
||||
{
|
||||
// 如果1分钟超时计数器为0,则清空RxLen
|
||||
// 如果1分钟超时计数器为0,则清空RxLen
|
||||
if(RxRevTimeOutCnt == 0)
|
||||
RxLen = 0;
|
||||
|
||||
// 重置1分钟超时计数器
|
||||
// 重置1分钟超时计数器
|
||||
RxRevTimeOutCnt = 3;
|
||||
// 如果RxLen小于128,则将数据添加到RxBuff中
|
||||
// 如果RxLen小于128,则将数据添加到RxBuff中
|
||||
if(RxLen < 128) {
|
||||
RxBuff[RxLen++] = Data;
|
||||
}
|
||||
// DBG_LOG("RxBuff = %s\n", RxBuff);
|
||||
// RS485_Flag=1;//接收标志为置1
|
||||
// RS485_Flag=1;//接收标志为置1
|
||||
}
|
||||
|
||||
extern uint8_t LocalMAC[6]; //本机MAC地址
|
||||
extern uint8_t GatewayMAC[6]; //网关MAC地址,注册时全为0
|
||||
extern uint8_t LocalMAC[6]; //本机MAC地址
|
||||
extern uint8_t GatewayMAC[6]; //网关MAC地址,注册时全为0
|
||||
extern uint32_t LocalType;
|
||||
extern uint32_t CommWay;
|
||||
extern uint32_t DeviceSign;
|
||||
extern uint32_t AddNumber;
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdGetPara
|
||||
* 功能描述: 查看参数
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdGetPara
|
||||
* 功能描述: 查看参数
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdGetPara(int argc, char *argv[])
|
||||
{
|
||||
@@ -226,11 +226,11 @@ static void DebugCmdGetPara(int argc, char *argv[])
|
||||
DBG_LOG("**********************************************************\r\n");
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdMainOnOff
|
||||
* 功能描述: 主调试信息开关
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdMainOnOff
|
||||
* 功能描述: 主调试信息开关
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdMainOnOff(int argc, char *argv[])
|
||||
{
|
||||
@@ -253,11 +253,11 @@ static void DebugCmdMainOnOff(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdDataOnOff
|
||||
* 功能描述: 数据调试信息开关
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdDataOnOff
|
||||
* 功能描述: 数据调试信息开关
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdDataOnOff(int argc, char *argv[])
|
||||
{
|
||||
@@ -280,11 +280,11 @@ static void DebugCmdDataOnOff(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdSetMac
|
||||
* 功能描述: 设置MAC地址
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdSetMac
|
||||
* 功能描述: 设置MAC地址
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdSetMac(int argc, char *argv[])
|
||||
{
|
||||
@@ -317,11 +317,11 @@ static void DebugCmdSetMac(int argc, char *argv[])
|
||||
DBG_LOG("Set gateway mac Address completed.\r\n");
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdDevReg
|
||||
* 功能描述: 设备申请注册
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdDevReg
|
||||
* 功能描述: 设备申请注册
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdDevReg(int argc, char *argv[])
|
||||
{
|
||||
@@ -340,11 +340,11 @@ static void DebugCmdDevReg(int argc, char *argv[])
|
||||
App.LoginFlag = true;
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdDataUpload
|
||||
* 功能描述: 设备数据上传
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdDataUpload
|
||||
* 功能描述: 设备数据上传
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdDataUpload(int argc, char *argv[])
|
||||
{
|
||||
@@ -372,11 +372,11 @@ static void DebugCmdDataUpload(int argc, char *argv[])
|
||||
App.UploadFlag = true;
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdDataColl
|
||||
* 功能描述: 设备数据采集
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdDataColl
|
||||
* 功能描述: 设备数据采集
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdDataColl(int argc, char *argv[])
|
||||
{
|
||||
@@ -394,11 +394,11 @@ static void DebugCmdDataColl(int argc, char *argv[])
|
||||
SGCP.TimingAcquisition = true;
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdCat1OnOff
|
||||
* 功能描述: CAT1调试信息开关
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdCat1OnOff
|
||||
* 功能描述: CAT1调试信息开关
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void DebugCmdRS485Ctrl(int argc, char *argv[])
|
||||
{
|
||||
@@ -541,11 +541,11 @@ void DebugCmdRS485Ctrl(int argc, char *argv[])
|
||||
SAVE_APP_PARA((uint32_t *)&App.Para);
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugLoraConfig
|
||||
* 功能描述: Lora参数配置
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugLoraConfig
|
||||
* 功能描述: Lora参数配置
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugLoraConfig(int argc, char *argv[])
|
||||
{
|
||||
@@ -675,19 +675,19 @@ static void DebugLoraConfig(int argc, char *argv[])
|
||||
DBG_LOG("Lora reinitializes.\r\n");
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdLPConfig
|
||||
* 功能描述: 低功耗参数配置
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdLPConfig
|
||||
* 功能描述: 低功耗参数配置
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdLPConfig(int argc, char *argv[])
|
||||
{
|
||||
DBG_LOG("\r\n");
|
||||
uint16_t CollectInterval; //采集时间间隔
|
||||
uint16_t ReportInterval; //上报时间间隔
|
||||
uint8_t ERInterval; //紧急上报时间间隔
|
||||
uint8_t ERTime; //紧急上报时长
|
||||
uint16_t CollectInterval; //采集时间间隔
|
||||
uint16_t ReportInterval; //上报时间间隔
|
||||
uint8_t ERInterval; //紧急上报时间间隔
|
||||
uint8_t ERTime; //紧急上报时长
|
||||
|
||||
if(strcmp(argv[1], "?") == 0) {
|
||||
DBG_LOG("Debug Cmd: lpcfg arg1 arg2 arg3 arg4\r\n");
|
||||
@@ -737,11 +737,11 @@ static void DebugCmdLPConfig(int argc, char *argv[])
|
||||
DBG_LOG("The low-power device is configured.\r\n");
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugLaserConfig
|
||||
* 功能描述: 激光控制
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugLaserConfig
|
||||
* 功能描述: 激光控制
|
||||
* 参 数: argc, 输入参数数量
|
||||
* argv, 参数列表
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugLaserConfig(int argc, char *argv[])
|
||||
{
|
||||
@@ -751,32 +751,52 @@ static void DebugLaserConfig(int argc, char *argv[])
|
||||
|
||||
if(strcmp(argv[1], "?") == 0) {
|
||||
DBG_LOG("Debug Cmd: laser arg1\r\n");
|
||||
DBG_LOG(" brief --> Control laser on or off.\r\n");
|
||||
DBG_LOG(" arg1 --> on/off\r\n\r\n");
|
||||
DBG_LOG(" brief --> Control laser on/off, set auto-off timer.\r\n");
|
||||
DBG_LOG(" arg1 --> on/off/time\r\n");
|
||||
DBG_LOG(" laser on Turn on laser, start timer.\r\n");
|
||||
DBG_LOG(" laser off Turn off laser.\r\n");
|
||||
DBG_LOG(" laser time <min> Set auto-off timer (0=disable, default 10).\r\n\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if(strcmp(argv[1], "on") == 0) {
|
||||
DBG_LOG("The laser has been activated.\r\n");
|
||||
SGCP.LaserOnOff = true;
|
||||
SGCP.LaserTimerCount = SGCP.LaserTimerMinutes * 2;
|
||||
SGCP.GWStatus = GW_STATUS_LASER_STARES;
|
||||
}
|
||||
else if(strcmp(argv[1], "off") == 0) {
|
||||
DBG_LOG("The laser has been turned off.\r\n");
|
||||
SGCP.LaserOnOff = false;
|
||||
SGCP.LaserTimerCount = 0;
|
||||
SGCP.GWStatus = GW_STATUS_LASER_STARES;
|
||||
}
|
||||
else if(strcmp(argv[1], "time") == 0)
|
||||
{
|
||||
if(argc < 3)
|
||||
{
|
||||
DBG_LOG("Laser timer is set to %d minute(s).\r\n", SGCP.LaserTimerMinutes);
|
||||
return;
|
||||
}
|
||||
int min = atoi(argv[2]);
|
||||
if(min < 0 || min > 255)
|
||||
{
|
||||
DBG_LOG("Invalid minutes! Range: 0~255.\r\n");
|
||||
return;
|
||||
}
|
||||
SGCP.LaserTimerMinutes = (uint8_t)min;
|
||||
DBG_LOG("Laser timer set to %d minute(s).\r\n", SGCP.LaserTimerMinutes);
|
||||
}
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdRestoreFactory
|
||||
* 功能描述: 恢复出厂设置
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
* Function: DebugCmdRestoreFactory
|
||||
* Description: 恢复出厂设置
|
||||
* Input: argc, 参数个数
|
||||
* argv, 参数列表
|
||||
* Output: 无
|
||||
*****************************************************************************************/
|
||||
void DebugCmdRestoreFactory(int argc, char *argv[])
|
||||
{
|
||||
DBG_LOG("\r\n");
|
||||
if(strcmp(argv[1], "?") == 0) {
|
||||
DBG_LOG("Debug Cmd: res arg1\r\n\
|
||||
brief --> Restore to factory.\r\n");
|
||||
@@ -797,11 +817,11 @@ void DebugCmdRestoreFactory(int argc, char *argv[])
|
||||
while(1);
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* 函数名称: DebugCmdReboot
|
||||
* 功能描述: 设备重启
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
* 函数名称: DebugCmdReboot
|
||||
* 功能描述: 设备重启
|
||||
* 参 数: argc, 输入参数数量
|
||||
argv, 输入参数
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdChannel(int argc, char *argv[])
|
||||
{
|
||||
@@ -841,12 +861,43 @@ static void DebugCmdReboot(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************************
|
||||
* Function: DebugCmdAtt
|
||||
* Description: 姿态角持续输出
|
||||
* Input: argc, 参数个数
|
||||
argv, 参数列表
|
||||
* Output: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdAtt(int argc, char *argv[])
|
||||
{
|
||||
DBG_LOG("\r\n");
|
||||
if(argc < 2 || strcmp(argv[1], "?") == 0)
|
||||
{
|
||||
DBG_LOG("Debug Cmd: att\r\n");
|
||||
DBG_LOG(" brief --> Continuous attitude angle output.\r\n");
|
||||
DBG_LOG(" arg1 --> on/off\r\n\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if(strcmp(argv[1], "on") == 0)
|
||||
{
|
||||
App.AttTestMode = true;
|
||||
App.AttTestCnt = 1000;
|
||||
DBG_LOG("Attitude debug output ON.\r\n");
|
||||
}
|
||||
else if(strcmp(argv[1], "off") == 0)
|
||||
{
|
||||
App.AttTestMode = false;
|
||||
DBG_LOG("Attitude debug output OFF.\r\n");
|
||||
}
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* Function: DebugCmdSignal
|
||||
* Description: 信号质量查询
|
||||
* Input: argc, 参数个数
|
||||
argv, 参数列表
|
||||
* Output: 无
|
||||
* Description: 信号质量查询
|
||||
* Input: argc, 参数个数
|
||||
argv, 参数列表
|
||||
* Output: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdSignal(int argc, char *argv[])
|
||||
{
|
||||
@@ -866,19 +917,51 @@ static void DebugCmdSignal(int argc, char *argv[])
|
||||
}
|
||||
SGCP.GWStatus = GW_STATUS_SIGNAL;
|
||||
}
|
||||
/*****************************************************************************************
|
||||
* Function: DebugCmdAttTest
|
||||
* Description: 姿态角测试输出
|
||||
* Input: argc, 参数个数
|
||||
* argv, 参数列表
|
||||
* Output: 无
|
||||
*****************************************************************************************/
|
||||
static void DebugCmdAttTest(int argc, char *argv[])
|
||||
{
|
||||
DBG_LOG("\r\n");
|
||||
if(argc < 2)
|
||||
{
|
||||
DBG_LOG("Debug Cmd: att on/off\r\n");
|
||||
DBG_LOG(" att on --> Start attitude test output.\r\n");
|
||||
DBG_LOG(" att off --> Stop attitude test output.\r\n\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if(strcmp(argv[1], "on") == 0) {
|
||||
App.AttTestMode = true;
|
||||
App.AttTestCnt = 1000;
|
||||
DBG_LOG("Attitude test started.\r\n");
|
||||
}
|
||||
else if(strcmp(argv[1], "off") == 0) {
|
||||
App.AttTestMode = false;
|
||||
DBG_LOG("Attitude test stopped.\r\n");
|
||||
}
|
||||
else {
|
||||
DBG_LOG("Usage: att on/off\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
void DebugCmdHelp(int argc, char *argv[])
|
||||
{
|
||||
DBG_LOG("\r\n");
|
||||
char Data[10];
|
||||
uint8_t len = 0;
|
||||
char *argv1[10]; // 最多10个参数,按需调整
|
||||
char *argv1[10]; // 最多10个参数,按需调整
|
||||
int argc1 = 0;
|
||||
char *token;
|
||||
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("para ?\0");
|
||||
memcpy(Data, "para ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -888,7 +971,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("main ?\0");
|
||||
memcpy(Data, "main ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -898,7 +981,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("data ?\0");
|
||||
memcpy(Data, "data ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -908,7 +991,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("mac ?\0");
|
||||
memcpy(Data, "mac ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -918,7 +1001,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("reg ?\0");
|
||||
memcpy(Data, "reg ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -928,7 +1011,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("up ?\0");
|
||||
memcpy(Data, "up ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -938,7 +1021,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("coll ?\0");
|
||||
memcpy(Data, "coll ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -948,7 +1031,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("rs485 ?\0");
|
||||
memcpy(Data, "rs485 ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -958,7 +1041,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("lora ?\0");
|
||||
memcpy(Data, "lora ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -968,7 +1051,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("lpcfg ?\0");
|
||||
memcpy(Data, "lpcfg ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -978,7 +1061,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("laser ?\0");
|
||||
memcpy(Data, "laser ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -988,7 +1071,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("res ?\0");
|
||||
memcpy(Data, "res ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -1008,7 +1091,7 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("reboot ?\0");
|
||||
memcpy(Data, "reboot ?\0", len);
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
token = strtok(Data, " "); // 假设分隔符是空格
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
@@ -1023,7 +1106,16 @@ void DebugCmdHelp(int argc, char *argv[])
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
}
|
||||
DebugCmdSignal(argc1, argv1);
|
||||
|
||||
memset(Data, 0x00, 10);
|
||||
len = strlen("att ?\0");
|
||||
memcpy(Data, "att ?\0", len);
|
||||
token = strtok(Data, " ");
|
||||
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
|
||||
argv1[argc1] = token;
|
||||
token = strtok(NULL, " ");
|
||||
}
|
||||
DebugCmdAtt(argc1, argv1);
|
||||
}
|
||||
|
||||
const DBGFunType DebugFun[DEBUG_CMD_CNT] = {
|
||||
@@ -1042,6 +1134,7 @@ const DBGFunType DebugFun[DEBUG_CMD_CNT] = {
|
||||
"res", DebugCmdRestoreFactory,
|
||||
"dch", DebugCmdChannel,
|
||||
"reboot", DebugCmdReboot,
|
||||
"att", DebugCmdAtt,
|
||||
"sig", DebugCmdSignal,
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef __DEBUG_H
|
||||
#ifndef __DEBUG_H
|
||||
#define __DEBUG_H
|
||||
|
||||
#include "bsp.h"
|
||||
@@ -13,7 +13,7 @@
|
||||
void vcom_Send( char *format, ... );
|
||||
void vcom_Send2(uint8_t *sData, uint16_t len);
|
||||
|
||||
#define DBG_LOG2(x, y) vcom_Send2(x, y) //打印长度超过缓存DEBUG_BUFF_SIZE_MAX的信息
|
||||
#define DBG_LOG2(x, y) vcom_Send2(x, y) //打印长度超过缓存DEBUG_BUFF_SIZE_MAX的信息
|
||||
#define DBG_LOG(...) vcom_Send(__VA_ARGS__)
|
||||
#define DBG_LOG_F(fmt,arg...) LOG("[%s] "fmt,__FUNCTION__,##arg)
|
||||
|
||||
@@ -27,7 +27,7 @@ void vcom_Send2(uint8_t *sData, uint16_t len);
|
||||
}
|
||||
|
||||
typedef enum {
|
||||
DBG_CH_UART0 = 0, //默认串口调试方式 Uart0Init
|
||||
DBG_CH_UART0 = 0, //默认串口调试方式 Uart0Init
|
||||
DBG_CH_RS485_1, //RS485_1 (LPUART0)
|
||||
}DebugChannel_e;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "lsm6dsl_app.h"
|
||||
#include "lsm6dsl_reg.h"
|
||||
@@ -15,7 +15,7 @@ static bool InitFlag;
|
||||
|
||||
#define ACC_CVTTIME (20 * 1000)
|
||||
#define ACC_COLL_CNT_MAX 6
|
||||
#define ACC_FIFO_WATERMASK (ACC_COLL_CNT_MAX * 6) //采集一秒数据
|
||||
#define ACC_FIFO_WATERMASK (ACC_COLL_CNT_MAX * 6) //采集一秒数据
|
||||
#define TX_BUF_DIM 1000
|
||||
#define BOOT_TIME 15 //ms
|
||||
|
||||
@@ -93,7 +93,7 @@ static void Lsm6dsl_Init(void)
|
||||
/* Set Output Data Rate */
|
||||
lsm6dsl_xl_data_rate_set(&dev_ctx, LSM6DSL_XL_ODR_12Hz5);
|
||||
lsm6dsl_gy_data_rate_set(&dev_ctx, LSM6DSL_GY_ODR_12Hz5);
|
||||
//lsm6dsl_gy_data_rate_set(&left_dev_ctx, LSM6DSL_GY_ODR_OFF); //关闭地磁
|
||||
//lsm6dsl_gy_data_rate_set(&left_dev_ctx, LSM6DSL_GY_ODR_OFF); //关闭地磁
|
||||
/* Set full scale */
|
||||
lsm6dsl_xl_full_scale_set(&dev_ctx, LSM6DSL_2g);
|
||||
lsm6dsl_gy_full_scale_set(&dev_ctx, LSM6DSL_2000dps);
|
||||
@@ -110,26 +110,26 @@ static void Lsm6dsl_Init(void)
|
||||
/* Gyroscope - filtering chain */
|
||||
lsm6dsl_gy_band_pass_set(&dev_ctx, LSM6DSL_HP_260mHz_LP1_STRONG);
|
||||
|
||||
//fifo模式设置
|
||||
lsm6dsl_fifo_xl_batch_set(&dev_ctx, LSM6DSL_FIFO_XL_NO_DEC);//fifo加速度写入频率设置
|
||||
lsm6dsl_fifo_gy_batch_set(&dev_ctx, LSM6DSL_FIFO_GY_NO_DEC);//fifo陀螺仪写入频率设置
|
||||
lsm6dsl_fifo_data_rate_set(&dev_ctx, LSM6DSL_FIFO_12Hz5);//FIFO ODR选择
|
||||
//fifo模式设置
|
||||
lsm6dsl_fifo_xl_batch_set(&dev_ctx, LSM6DSL_FIFO_XL_NO_DEC);//fifo加速度写入频率设置
|
||||
lsm6dsl_fifo_gy_batch_set(&dev_ctx, LSM6DSL_FIFO_GY_NO_DEC);//fifo陀螺仪写入频率设置
|
||||
lsm6dsl_fifo_data_rate_set(&dev_ctx, LSM6DSL_FIFO_12Hz5);//FIFO ODR选择
|
||||
|
||||
//中断1设置,watermark full中断
|
||||
//中断1设置,watermark full中断
|
||||
lsm6dsl_int1_route_t int1val ={0, 0, 0};
|
||||
int1val.int1_full_flag = 1; //开阀值中断,fifo存储到缓存深度时触发
|
||||
int1val.int1_full_flag = 1; //开阀值中断,fifo存储到缓存深度时触发
|
||||
lsm6dsl_pin_int1_route_set(&dev_ctx, int1val);
|
||||
lsm6dsl_fifo_watermark_set(&dev_ctx, ACC_FIFO_WATERMASK);//FIFO水印电平设置,阈值设置,缓存深度
|
||||
lsm6dsl_fifo_stop_on_wtm_set(&dev_ctx, 1);//fifo缓存深度存满时,不再存储
|
||||
//lsm6dsl_fifo_xl_gy_8bit_format_set(&left_dev_ctx, 1);//在FIFO中为XL和陀螺启用MSByte记忆,缓存宽度
|
||||
lsm6dsl_block_data_update_set(&dev_ctx, 1); //fifo模式ctrl3_c bdu必须为1,直到读取MSB和LSB后才更新输出寄存器
|
||||
lsm6dsl_auto_increment_set(&dev_ctx, 1); //fifo模式ctrl3_c if_inc必须为1,通过串行接口(I2C或SPI)进行多字节访问时自动增加寄存器地址。
|
||||
lsm6dsl_fifo_watermark_set(&dev_ctx, ACC_FIFO_WATERMASK);//FIFO水印电平设置,阈值设置,缓存深度
|
||||
lsm6dsl_fifo_stop_on_wtm_set(&dev_ctx, 1);//fifo缓存深度存满时,不再存储
|
||||
//lsm6dsl_fifo_xl_gy_8bit_format_set(&left_dev_ctx, 1);//在FIFO中为XL和陀螺启用MSByte记忆,缓存宽度
|
||||
lsm6dsl_block_data_update_set(&dev_ctx, 1); //fifo模式ctrl3_c bdu必须为1,直到读取MSB和LSB后才更新输出寄存器
|
||||
lsm6dsl_auto_increment_set(&dev_ctx, 1); //fifo模式ctrl3_c if_inc必须为1,通过串行接口(I2C或SPI)进行多字节访问时自动增加寄存器地址。
|
||||
lsm6dsl_ctrl3_c_t ctrl3_c;
|
||||
platform_read(LSM6DSL_CTRL3_C, (uint8_t *)&ctrl3_c, 1);
|
||||
//lsm6dsl_fifo_mode_set(&dev_ctx, LSM6DSL_FIFO_MODE);
|
||||
|
||||
//中断2设置,唤醒中断
|
||||
// uint8_t temp = 0x90; //唤醒中断
|
||||
//中断2设置,唤醒中断
|
||||
// uint8_t temp = 0x90; //唤醒中断
|
||||
// platform_write(LSM6DSL_TAP_CFG, &temp, 1);
|
||||
// temp = 0;
|
||||
// platform_write(LSM6DSL_WAKE_UP_DUR, &temp, 1);
|
||||
|
||||
+70
-70
@@ -1,4 +1,4 @@
|
||||
#include "main.h"
|
||||
#include "main.h"
|
||||
#include "mmc5983.h"
|
||||
#include "UartDebug.h"
|
||||
#include "i2c.h"
|
||||
@@ -11,11 +11,11 @@ static bool MMC5983IntFlag;
|
||||
static MMC5983Var_t MMC5983Var;
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983_Write_Reg
|
||||
* 功能描述: MMC5983写寄存器
|
||||
* 参 数: reg 寄存器地址
|
||||
val 寄存器数据
|
||||
* 返 回 值: 成功返回true,失败返回false
|
||||
* 函数名称: MMC5983_Write_Reg
|
||||
* 功能描述: MMC5983写寄存器
|
||||
* 参 数: reg 寄存器地址
|
||||
val 寄存器数据
|
||||
* 返 回 值: 成功返回true,失败返回false
|
||||
*****************************************************************************************/
|
||||
static bool MMC5983_Write_Reg(uint8_t reg, uint8_t val)
|
||||
{
|
||||
@@ -23,10 +23,10 @@ static bool MMC5983_Write_Reg(uint8_t reg, uint8_t val)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983_Read_Reg
|
||||
* 功能描述: MMC5983读寄存器
|
||||
* 参 数: reg 寄存器地址
|
||||
* 返 回 值: 返回寄存器值
|
||||
* 函数名称: MMC5983_Read_Reg
|
||||
* 功能描述: MMC5983读寄存器
|
||||
* 参 数: reg 寄存器地址
|
||||
* 返 回 值: 返回寄存器值
|
||||
*****************************************************************************************/
|
||||
static uint8_t MMC5983_Read_Reg(uint8_t reg)
|
||||
{
|
||||
@@ -37,12 +37,12 @@ static uint8_t MMC5983_Read_Reg(uint8_t reg)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983_Read_Buffer
|
||||
* 功能描述: MMC5983读数据
|
||||
* 参 数: reg 寄存器地址
|
||||
buffer 读取数据输出缓存入口
|
||||
len 读取长度
|
||||
* 返 回 值: 成功返回true,失败返回false
|
||||
* 函数名称: MMC5983_Read_Buffer
|
||||
* 功能描述: MMC5983读数据
|
||||
* 参 数: reg 寄存器地址
|
||||
buffer 读取数据输出缓存入口
|
||||
len 读取长度
|
||||
* 返 回 值: 成功返回true,失败返回false
|
||||
*****************************************************************************************/
|
||||
static bool MMC5983_Read_Buffer(uint8_t reg, void *buffer, uint8_t len)
|
||||
{
|
||||
@@ -50,27 +50,27 @@ static bool MMC5983_Read_Buffer(uint8_t reg, void *buffer, uint8_t len)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983StartCov
|
||||
* 功能描述: MMC5983开启连续转换
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: MMC5983StartCov
|
||||
* 功能描述: MMC5983开启连续转换
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void MMC5983StartCov(void)
|
||||
{
|
||||
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
||||
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
||||
Ctrl2Reg.Byte = 0x00;
|
||||
Ctrl2Reg.Bit.Cm_freq = 0x04;
|
||||
Ctrl2Reg.Bit.Cmm_en = 1; //连续设1,单次设0
|
||||
Ctrl2Reg.Bit.Cmm_en = 1; //连续设1,单次设0
|
||||
Ctrl2Reg.Bit.Prd_set = 3;
|
||||
Ctrl2Reg.Bit.En_prd_set = 1; //连续设1,单次设0
|
||||
Ctrl2Reg.Bit.En_prd_set = 1; //连续设1,单次设0
|
||||
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983_Init
|
||||
* 功能描述: MMC5983初始化
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: MMC5983_Init
|
||||
* 功能描述: MMC5983初始化
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
static void MMC5983_Init(void)
|
||||
{
|
||||
@@ -93,12 +93,12 @@ static void MMC5983_Init(void)
|
||||
MMC5983_Write_Reg(MMC5983_CTRL_1, Ctrl1Reg.Byte);
|
||||
MMC5983Delay(15);
|
||||
|
||||
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
||||
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
|
||||
Ctrl2Reg.Byte = 0x00;
|
||||
Ctrl2Reg.Bit.Cm_freq = 0x04;
|
||||
Ctrl2Reg.Bit.Cmm_en = 0; //连续设1,单次设0
|
||||
Ctrl2Reg.Bit.Cmm_en = 0; //连续设1,单次设0
|
||||
Ctrl2Reg.Bit.Prd_set = 3;
|
||||
Ctrl2Reg.Bit.En_prd_set = 0; //连续设1,单次设0
|
||||
Ctrl2Reg.Bit.En_prd_set = 0; //连续设1,单次设0
|
||||
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
|
||||
|
||||
MMC5983RegCtrl3 Ctrl3Reg;
|
||||
@@ -121,12 +121,12 @@ static void MMC5983_Init(void)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983_Read
|
||||
* 功能描述: MMC5983读取原始数据
|
||||
* 参 数: MagAdcX X轴数据
|
||||
MagAdcY Y轴数据
|
||||
MagAdcZ Z轴数据
|
||||
* 返 回 值: 成功返回true,失败返回false
|
||||
* 函数名称: MMC5983_Read
|
||||
* 功能描述: MMC5983读取原始数据
|
||||
* 参 数: MagAdcX X轴数据
|
||||
MagAdcY Y轴数据
|
||||
MagAdcZ Z轴数据
|
||||
* 返 回 值: 成功返回true,失败返回false
|
||||
*****************************************************************************************/
|
||||
static bool MMC5983_Read(int32_t *MagAdcX, int32_t *MagAdcY, int32_t *MagAdcZ)
|
||||
{
|
||||
@@ -142,10 +142,10 @@ static bool MMC5983_Read(int32_t *MagAdcX, int32_t *MagAdcY, int32_t *MagAdcZ)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983_Get_Mag
|
||||
* 功能描述: 外部获取MMC5983磁场强度数据
|
||||
* 参 数: mag 读取数据输出缓存入口
|
||||
* 返 回 值: 无
|
||||
* 函数名称: MMC5983_Get_Mag
|
||||
* 功能描述: 外部获取MMC5983磁场强度数据
|
||||
* 参 数: mag 读取数据输出缓存入口
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void MMC5983_Get_Mag(float *mag)
|
||||
{
|
||||
@@ -164,10 +164,10 @@ void MMC5983_Get_Mag(float *mag)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983LoopHandler
|
||||
* 功能描述: MMC5983循环处理函数
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: MMC5983LoopHandler
|
||||
* 功能描述: MMC5983循环处理函数
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
extern void MmcDataProcessCallBack(float *Mag);
|
||||
|
||||
@@ -251,16 +251,16 @@ void MMC5983LoopHandler(void)
|
||||
case MMC5983_STATUS_STOP:{
|
||||
MMC5983Stop();
|
||||
MMC5983Var.Status = MMC5983_STATUS_IDLE;
|
||||
//MMC5983Var.Status = MMC5983_STATUS_START;//持续工作
|
||||
//MMC5983Var.Status = MMC5983_STATUS_START;//持续工作
|
||||
break;}
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: LeftMMC59831mSRoutine
|
||||
* 功能描述: MMC59831ms时基循环处理函数
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: LeftMMC59831mSRoutine
|
||||
* 功能描述: MMC59831ms时基循环处理函数
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void MMC59831mSRoutine(void)
|
||||
{
|
||||
@@ -269,10 +269,10 @@ void MMC59831mSRoutine(void)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: LeftMMC5983Init
|
||||
* 功能描述: MMC5983初始化
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: LeftMMC5983Init
|
||||
* 功能描述: MMC5983初始化
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void MMC5983Init(void)
|
||||
{
|
||||
@@ -285,10 +285,10 @@ void MMC5983Init(void)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: LeftMMC5983Start
|
||||
* 功能描述: MMC5983启动
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: LeftMMC5983Start
|
||||
* 功能描述: MMC5983启动
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void MMC5983Start(void)
|
||||
{
|
||||
@@ -301,21 +301,21 @@ void MMC5983Start(void)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: LeftMMC5983StartRead
|
||||
* 功能描述: MMC5983启动读取
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: LeftMMC5983StartRead
|
||||
* 功能描述: MMC5983启动读取
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void MMC5983StartRead(void)
|
||||
{
|
||||
MMC5983_Init();//读取时重新初始化
|
||||
MMC5983_Init();//读取时重新初始化
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: MMC5983Stop
|
||||
* 功能描述: MMC5983停止
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: MMC5983Stop
|
||||
* 功能描述: MMC5983停止
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void MMC5983Stop(void)
|
||||
{
|
||||
@@ -331,10 +331,10 @@ void MMC5983Stop(void)
|
||||
}
|
||||
|
||||
/*****************************************************************************************
|
||||
* 函数名称: LeftMMC5983IntCallBack
|
||||
* 功能描述: MMC5983中断回调
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
* 函数名称: LeftMMC5983IntCallBack
|
||||
* 功能描述: MMC5983中断回调
|
||||
* 参 数: 无
|
||||
* 返 回 值: 无
|
||||
*****************************************************************************************/
|
||||
void MMC5983IntCallBack(void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user