1.前言
hpm6750具有高性能,比較適合做復(fù)雜控制算法,而工控領(lǐng)域can總線是繞不開的話題,本文進(jìn)行基本can測(cè)試,后續(xù)將在此基礎(chǔ)上進(jìn)行相對(duì)復(fù)雜的程序編寫。
2.接線
本次測(cè)評(píng)的hpm67650evkmini板子上沒有can總線的phy,如果要用can總線就只能外接,剛好手上有個(gè)TJA1050小板,就用它測(cè)試。
TJA1050PHY板第一步:查詢芯片手冊(cè)以及開發(fā)板手冊(cè),找到需要的引腳。
芯片數(shù)據(jù)手冊(cè)(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進(jìn)行連接,連好后的照片如下圖。

3.生成can測(cè)試工程
start_cmd.cmd進(jìn)入D:\AEMBED\HPM6750\sdk_env_v0.11.0\hpm_sdk\samples\drivers\can
> generate_project -b hpm6750evkmini -t flash_xip
使用SEGGER Embedded Studio打開工程。
4.代碼分析
根據(jù)can_demo.c中的源代碼,準(zhǔn)備測(cè)試board_can_echo_test_responder回傳程序,關(guān)鍵代碼如下:
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");
}
分析代碼,總結(jié)函數(shù)功能:如果接收到can信息,將在串口打印出該信息的id以及信息內(nèi)容,并且以ID=0x321將該can信息原路發(fā)送回去。
5.下載工程
使用SEGGER Embedded Studio編譯下載,運(yùn)行:

1.串口控制臺(tái)輸入3,板子進(jìn)入等待接收狀態(tài);
2.使用usbcan發(fā)送如圖所示信息,板子串口控制臺(tái)出現(xiàn)響應(yīng),同時(shí)usbcan接收到板子發(fā)回的can信息。

3.試驗(yàn)現(xiàn)象與分析一致,can總線測(cè)試成功!
審核編輯:湯梓紅
-
測(cè)試
+關(guān)注
關(guān)注
9文章
6202瀏覽量
131352 -
CAN
+關(guān)注
關(guān)注
59文章
3067瀏覽量
472745 -
總線
+關(guān)注
關(guān)注
10文章
3040瀏覽量
91658 -
開發(fā)板
+關(guān)注
關(guān)注
26文章
6290瀏覽量
118071
發(fā)布評(píng)論請(qǐng)先 登錄
虹科HK-CoreTest:專業(yè)的CAN/CAN FD總線測(cè)試軟件,高效易用
探索UCANS32K1系列CAN節(jié)點(diǎn)開發(fā)板:設(shè)計(jì)、應(yīng)用與實(shí)戰(zhàn)指南
開發(fā)者分享 | HPM5E-EC-DEV:基于HPM5E00的EtherCAT開發(fā)板分享
HPM6E00EVKRevC開發(fā)板32位RISC-V架構(gòu)
HPM monitor studio 只能在 hpm芯片+hpm_sdk 的組合下才能用嗎?
迅為RK3568開發(fā)板模型推理測(cè)試實(shí)戰(zhàn)LPRNet?車牌識(shí)別
【HZ-RK3568開發(fā)板免費(fèi)體驗(yàn)】02 開發(fā)板外設(shè)測(cè)試
HPM6P41 BuckBoost 開發(fā)板之(一)硬件設(shè)計(jì)篇
基于米爾全志T536開發(fā)板的多協(xié)議物聯(lián)網(wǎng)關(guān)的方案測(cè)試
Linux開發(fā)板CAN總線測(cè)試方法,觸覺智能RK3568開發(fā)板演示
重磅更新 | 先楫半導(dǎo)體HPM_SDK v1.9.0 發(fā)布
HPM6750EVKMINI開發(fā)板的CAN總線測(cè)試
評(píng)論