1.前言
hpm6750具有高性能,比較適合做復雜控制算法,而工控領域can總線是繞不開的話題,本文進行基本can測試,后續將在此基礎上進行相對復雜的程序編寫。
2.接線
本次測評的hpm67650evkmini板子上沒有can總線的phy,如果要用can總線就只能外接,剛好手上有個TJA1050小板,就用它測試。
TJA1050PHY板第一步:查詢芯片手冊以及開發板手冊,找到需要的引腳。
芯片數據手冊(HPM6700_6400_DS_V1_2.pdf)板載P2連接器列表(HPM6750EVKMINI USER GUIDE.pdf)板載P1連接器列表(HPM6750EVKMINI USER GUIDE.pdf)整理需要連接的引腳如下表所示:
TJA1050PHY板引腳 |
HPM6750EVKMINI引腳 |
+5v |
P1_2 |
GND |
P1_6 |
CAN_TX |
P2_7 |
CAN_RX |
P2_10 |
然后使用杜邦線,將兩塊板以及usbcan進行連接,連好后的照片如下圖。
3.生成can測試工程
start_cmd.cmd進入D:\AEMBED\HPM6750\sdk_env_v0.11.0\hpm_sdk\samples\drivers\can
> generate_project -b hpm6750evkmini -t flash_xip
使用SEGGER Embedded Studio打開工程。
4.代碼分析
根據can_demo.c中的源代碼,準備測試board_can_echo_test_responder
回傳程序,關鍵代碼如下:
void board_can_echo_test_responder(void)
{
can_config_t can_config;
can_get_default_config(&can_config);
can_config.baudrate = 500000; /* 500kbps */
can_config.mode = can_mode_normal;
board_init_can(BOARD_APP_CAN_BASE);
uint32_t can_src_clk_freq = board_init_can_clock(BOARD_APP_CAN_BASE);
hpm_stat_t status = can_init(BOARD_APP_CAN_BASE, &can_config, can_src_clk_freq);
if (status != status_success) {
printf("CAN initialization failed, error code: %d\n", status);
return;
}
can_enable_tx_rx_irq(BOARD_APP_CAN_BASE, CAN_EVENT_RECEIVE);
intc_m_enable_irq_with_priority(BOARD_APP_CAN_IRQn, 1);
printf("CAN echo test: Responder is waiting for echo message...\n");
while (!has_new_rcv_msg) {
}
has_new_rcv_msg = false;
show_received_can_message((const can_receive_buf_t *)&s_can_rx_buf);
can_transmit_buf_t tx_buf;
memset(&tx_buf, 0, sizeof(tx_buf));
tx_buf.dlc = s_can_rx_buf.dlc;
tx_buf.id = 0x321;
uint32_t msg_len = can_get_data_bytes_from_dlc(s_can_rx_buf.dlc);
memcpy(&tx_buf.data, (uint8_t *)&s_can_rx_buf.data, msg_len);
status = can_send_message_blocking(BOARD_APP_CAN_BASE, &tx_buf);
if (status != status_success) {
printf("CAN sent message failed, error_code:%d\n", status);
return;
}
printf("Sent echo message back\n");
}
分析代碼,總結函數功能:如果接收到can信息,將在串口打印出該信息的id以及信息內容,并且以ID=0x321將該can信息原路發送回去。
5.下載工程
使用SEGGER Embedded Studio編譯下載,運行:
1.串口控制臺輸入3,板子進入等待接收狀態;
2.使用usbcan發送如圖所示信息,板子串口控制臺出現響應,同時usbcan接收到板子發回的can信息。
3.試驗現象與分析一致,can總線測試成功!
審核編輯:湯梓紅
-
測試
+關注
關注
8文章
5279瀏覽量
126603 -
CAN
+關注
關注
57文章
2744瀏覽量
463629 -
總線
+關注
關注
10文章
2878瀏覽量
88055 -
開發板
+關注
關注
25文章
5033瀏覽量
97382
發布評論請先 登錄
相關推薦
評論