千家信息网

JY901 NOTES TM4串口数据读取的示例分析

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章给大家分享的是有关JY901 NOTES TM4串口数据读取的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、串口读取模块数据我在这里附上我于厂家提供的例
千家信息网最后更新 2024年09月22日JY901 NOTES TM4串口数据读取的示例分析

这篇文章给大家分享的是有关JY901 NOTES TM4串口数据读取的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、串口读取模块数据

我在这里附上我于厂家提供的例程基础上修改而来的串口数据读取函数(虽然很简单但是可以节省看到帖子的老哥的时间)。

首先TM4串口1初始化:

#define UART1Baud  115200void initUART1(){           ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);                        ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);        ROM_GPIOPinConfigure(GPIO_PB0_U1RX);        ROM_GPIOPinConfigure(GPIO_PB1_U1TX);        ROM_GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);        ROM_UARTConfigSetExpClk(UART1_BASE, ROM_SysCtlClockGet(), UART1Baud,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));        ROM_IntEnable(INT_UART1);        UARTFIFODisable(UART1_BASE);        UARTIntRegister(UART1_BASE,UART1_Handler);        ROM_UARTIntEnable(UART1_BASE, UART_INT_RX | UART_INT_RT);        }

然后按照手册的协议解读:

float roll=0,pitch=0,yaw=0;                                                         float accX=0,accY=0,accZ=0;                                                                float gyrX=0,gyrY=0,gyrZ=0;                                                        void JY901_GetOneByte(u8 data){                static u8 ucRxBuffer[12];                static u8 ucRxCnt = 0;                      ucRxBuffer[ucRxCnt++]=data;        if(ucRxBuffer[0]!=0x55)         {                ucRxCnt=0;                return;                                                                                                                                                                                                                                                                           }        if (ucRxCnt<11) {return;}        else        {                switch(ucRxBuffer[1])                {                                                case 0x51:                                 accX=(float)((int16_t)(ucRxBuffer[3]<<8)|ucRxBuffer[2])/32768*16*9.8f;                                accY=(float)((int16_t)(ucRxBuffer[5]<<8)|ucRxBuffer[4])/32768*16*9.8f;                                accZ=(float)((int16_t)(ucRxBuffer[7]<<8)|ucRxBuffer[6])/32768*16*9.8f;                                break;                        case 0x52:                                 gyrX=(float)((int16_t)(ucRxBuffer[3]<<8)|ucRxBuffer[2])/32768*2000;                                gyrY=(float)((int16_t)(ucRxBuffer[5]<<8)|ucRxBuffer[4])/32768*2000;                                gyrZ=(float)((int16_t)(ucRxBuffer[7]<<8)|ucRxBuffer[6])/32768*2000;//                              flag.gyro_ok=1;                                break;                        case 0x53:                                 roll    =(float)((int16_t)(ucRxBuffer[3]<<8)|ucRxBuffer[2])/32768*180;                                pitch =(float)((int16_t)(ucRxBuffer[5]<<8)|ucRxBuffer[4])/32768*180;                                yaw        =(float)((int16_t)(ucRxBuffer[7]<<8)|ucRxBuffer[6])/32768*180;//                              printf("roll:%.2f pitch:%.2f yaw:%.2f \n",roll,pitch,yaw);//                              printf("accX:%.2f accY:%.2f accZ:%.2f \n",accX,accY,accZ);//                              flag.angle_ok=1;                                break;                }                ucRxCnt=0;        }}

在串口中断里调用这个就行了。

二、上位机磁力计校准

使用原厂的上位机进行磁力计的椭球拟合校准时,请务必不要只看原子哥论坛的这个帖子,要仔细看原厂的说明书:

记得事先校准好再焊到板子上,不然就只有那超长杜邦线接usb转串口拿着四轴转来转去校准了。。

另外一说,这个上位机写得好烂,很多bug,把我电脑卡死不止一次,遇到bug不要着急,关了重开,一定要确定连上了模块且数据都ok再校准,如果点了开始校准然后椭圆图像卡住了,就重开重来。。。记得校准的时候远离强磁场。

三、尴尬的180度

当你完成磁力计校准之后,你会发现在某个yaw角度,数值是170多度,然后当你再转一点yaw角,上位机就会显示-170多度,因为这玩意输出的范围是-180~180度,如果直接带去控制,那么这种情况下,你的四轴认为自己转了一圈,要转一圈再回来,误差就会非常大,PID的话就会失控。

感谢各位的阅读!关于"JY901 NOTES TM4串口数据读取的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

串口 数据 磁力 磁力计 示例 分析 内容 原厂 帖子 更多 模块 篇文章 不错 实用 着急 准时 尴尬 转来转去 函数 厂家 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手机视频服务器连接异常怎么处理 网络安全研究的唯一动因 互联网促进科技进步的例子 方舟手机服务器怎么设置会员 视觉软件开发吃年轻饭么 怎么找到云服务器供应商 构建网络安全防火墙观后感 在线iphone软件开发 菏泽市网络安全知识竞赛决赛 连云港网络服务器机柜价位 网络安全法心得体会300字 剑与家园苹果版如何切换服务器 电脑数字媒体服务器 数据库的相关性 魔抗世界任务网络安全 山西曙光服务器虚拟化哪家好 增员提示与数据库不符怎么回事 计算机网络技术十年发展方向 胃癌TCGA数据库 石林品牌软件开发市场价 网络技术实训总结1500字 数据库服务器查看实例 vba访问sql数据库 sdn控制器软件开发 广东 网络安全手册 灵石租房软件开发 青海软件开发公司地址 畅游天下网络技术公司 安卓自带数据库是怎么创建列 发生服务器错误
0