中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JY901 NOTES TM4串口數據讀取的示例分析

發布時間:2022-01-14 15:31:34 來源:億速云 閱讀:101 作者:小新 欄目:互聯網科技

這篇文章給大家分享的是有關JY901 NOTES TM4串口數據讀取的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、串口讀取模塊數據

我在這里附上我于廠家提供的例程基礎上修改而來的串口數據讀取函數(雖然很簡單但是可以節省看到帖子的老哥的時間)。

首先TM4串口1初始化:

#define UART1Baud  115200
void 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;
	}
}

在串口中斷里調用這個就行了。

二、上位機磁力計校準

使用原廠的上位機進行磁力計的橢球擬合校準時,請務必不要只看原子哥論壇的這個帖子,要仔細看原廠的說明書:JY901 NOTES TM4串口數據讀取的示例分析

記得事先校準好再焊到板子上,不然就只有那超長杜邦線接usb轉串口拿著四軸轉來轉去校準了。。

另外一說,這個上位機寫得好爛,很多bug,把我電腦卡死不止一次,遇到bug不要著急,關了重開,一定要確定連上了模塊且數據都ok再校準,如果點了開始校準然后橢圓圖像卡住了,就重開重來。。。記得校準的時候遠離強磁場。

三、尷尬的180度

當你完成磁力計校準之后,你會發現在某個yaw角度,數值是170多度,然后當你再轉一點yaw角,上位機就會顯示-170多度,因為這玩意輸出的范圍是-180~180度,如果直接帶去控制,那么這種情況下,你的四軸認為自己轉了一圈,要轉一圈再回來,誤差就會非常大,PID的話就會失控。

感謝各位的閱讀!關于“JY901 NOTES TM4串口數據讀取的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邢台县| 响水县| 谷城县| 时尚| 武鸣县| 阳江市| 金阳县| 广河县| 马关县| 南平市| 盈江县| 涿鹿县| 阿鲁科尔沁旗| 甘谷县| 镇赉县| 四平市| 外汇| 嘉祥县| 子长县| 郑州市| 瓮安县| 葵青区| 磐石市| 广昌县| 莱阳市| 巩义市| 渑池县| 修水县| 十堰市| 丰县| 根河市| 奈曼旗| 昭觉县| 嘉鱼县| 鄂尔多斯市| 浠水县| 河西区| 石屏县| 宿松县| 页游| 合江县|