|
stm32f429 CAN回環(huán)測(cè)試,共同進(jìn)步學(xué)習(xí),感謝平臺(tái),會(huì)多多學(xué)不斷進(jìn)步
【*】程序簡(jiǎn)介
-工程名稱(chēng):CAN—回環(huán)測(cè)試
-MDK版本:5.16
-ST固件庫(kù)版本:1.5.1
【 !】功能簡(jiǎn)介:
使用CAN回環(huán)模式進(jìn)行通訊實(shí)驗(yàn)。
學(xué)習(xí)目的:學(xué)會(huì)使用CAN通信。
【 !】注意事項(xiàng):
本實(shí)驗(yàn)是回環(huán)測(cè)試,開(kāi)發(fā)板只是向自己發(fā)送數(shù)據(jù),不經(jīng)過(guò)CAN芯片,也不能把數(shù)據(jù)發(fā)送給外部主機(jī)。
需要雙機(jī)通訊請(qǐng)參考“CAN-雙機(jī)通訊”實(shí)驗(yàn)。
【 !】實(shí)驗(yàn)操作:
電腦端使用串口調(diào)試助手,選擇電腦與STM32相連的COM口,設(shè)置為115200-N-8-1,
復(fù)位開(kāi)發(fā)板,即可接收STM32串口發(fā)送給電腦的調(diào)試信息。
給開(kāi)發(fā)板下載本程序,按下開(kāi)發(fā)板的KEY1鍵,會(huì)使用CAN 回環(huán)發(fā)送0-255的數(shù)字。
若開(kāi)發(fā)板的CAN接收到256個(gè)字節(jié)數(shù)據(jù),會(huì)把數(shù)據(jù)以16進(jìn)制形式打印出來(lái)。
/*********************************************************************************************/
【*】 引腳分配
(回環(huán)測(cè)試不經(jīng)過(guò)CAN芯片,可不用管這部分)
CAN芯片
CAN芯片的電源引腳與排針相連,通過(guò)跳線(xiàn)帽STM32的串口相連。(出廠(chǎng)默認(rèn)沒(méi)有連接跳線(xiàn)帽)
5V <--->C/4-5V (可通過(guò)跳線(xiàn)帽連接到5v)
RXD <--->PB8
TXD <--->PB9
串口(TTL-USB TO USART):
CH340的收發(fā)引腳與STM32的發(fā)收引腳相連。
RX<--->PA9
TX<--->PA10
/*********************************************************************************************/
【*】 時(shí)鐘
A.晶振:
-外部高速晶振:25MHz
-RTC晶振:32.768KHz
B.各總線(xiàn)運(yùn)行時(shí)鐘:
-系統(tǒng)時(shí)鐘 = SYCCLK = AHB1 = 180MHz
-APB2 = 90MHz
-APB1 = 45MHz
C.浮點(diǎn)運(yùn)算單元:
不使用
單片機(jī)源程序如下:
- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @brief CAN通訊實(shí)驗(yàn)(回環(huán)模式)
- ******************************************************************************
- * @attention
-
- #include "stm32f4xx.h"
- #include "./led/bsp_led.h"
- #include "./usart/bsp_debug_usart.h"
- #include "./can/bsp_can.h"
- #include "./key/bsp_key.h"
- __IO uint32_t flag = 0; //用于標(biāo)志是否接收到數(shù)據(jù),在中斷函數(shù)中賦值
- CanTxMsg TxMessage; //發(fā)送緩沖區(qū)
- CanRxMsg RxMessage; //接收緩沖區(qū)
- /// 不精確的延時(shí)
- static void can_delay(__IO u32 nCount)
- {
- for(; nCount != 0; nCount--);
- }
- /**
- * @brief 主函數(shù)
- * @param 無(wú)
- * @retval 無(wú)
- */
- int main(void)
- {
-
- LED_GPIO_Config();
-
- /*初始化USART1*/
- Debug_USART_Config();
-
- /*初始化按鍵*/
- Key_GPIO_Config();
-
- /*初始化can,在中斷接收CAN數(shù)據(jù)包*/
- CAN_Config();
-
- printf("\r\n 歡迎使用秉火 STM32 F429 開(kāi)發(fā)板。\r\n");
- printf("\r\n 秉火F429 CAN通訊回環(huán)實(shí)驗(yàn)例程\r\n");
-
- printf("\r\n 實(shí)驗(yàn)步驟:\r\n");
- printf("\r\n 1.使用回環(huán)模式,不需要連接外部芯片\r\n");
- printf("\r\n 2.按下開(kāi)發(fā)板的KEY1鍵,會(huì)使用CAN向外發(fā)送0-7的數(shù)據(jù)包,包的擴(kuò)展ID為0x1314 (由于回環(huán)模式,是自己發(fā)送給自己)\r\n");
- printf("\r\n 3.若開(kāi)發(fā)板的CAN接收到擴(kuò)展ID為0x1314的數(shù)據(jù)包,會(huì)把數(shù)據(jù)以打印到串口。 \r\n");
- printf("\r\n 4.本例中的can波特率為1MBps,為stm32的can最高速率。 \r\n");
- while(1)
- {
- /*按一次按鍵發(fā)送一次數(shù)據(jù)*/
- if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON)
- {
- LED_BLUE;
- CAN_SetMsg(&TxMessage);
-
- CAN_Transmit(CANx, &TxMessage);
-
- can_delay(10000);//等待發(fā)送完畢,可使用CAN_TransmitStatus查看狀態(tài)
-
- LED_GREEN;
-
- printf("\r\n已使用CAN發(fā)送數(shù)據(jù)包!\r\n");
- printf("\r\n發(fā)送的報(bào)文內(nèi)容為:\r\n");
- printf("\r\n 擴(kuò)展ID號(hào)ExtId:0x%x \r\n",TxMessage.ExtId);
- CAN_DEBUG_ARRAY(TxMessage.Data,8);
- }
- if(flag==1)
- {
- LED_GREEN;
- printf("\r\nCAN接收到數(shù)據(jù):\r\n");
- CAN_DEBUG_ARRAY(RxMessage.Data,8);
-
- flag=0;
- }
-
-
- }
- }
- /*********************************************END OF FILE**********************/
復(fù)制代碼
所有資料51hei提供下載:
CAN—回環(huán)測(cè)試.zip
(559.33 KB, 下載次數(shù): 58)
2018-3-23 15:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|