91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

凤城市| 金门县| 大余县| 乐都县| 离岛区| 新津县| 镇江市| 余江县| 信阳市| 延边| 化州市| 乐陵市| 天津市| 霍城县| 阿尔山市| 施秉县| 固阳县| 玉环县| 纳雍县| 永宁县| 宁安市| 扬州市| 如皋市| 虞城县| 勃利县| 宁化县| 西丰县| 石柱| 卢氏县| 哈尔滨市| 固阳县| 库尔勒市| 西盟| 汾阳市| 合水县| 海原县| 临颍县| 凤冈县| 黄山市| 鄂温| 柞水县|