在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

聚豐項(xiàng)目 > AB32VG1 RT-Thread CAN總線收發(fā)

AB32VG1 RT-Thread CAN總線收發(fā)

本項(xiàng)目在 ab32vg1 開(kāi)發(fā)板上通過(guò)模擬口實(shí)現(xiàn)了 spi 協(xié)議并與 mcp2515 芯片通信,完成了收發(fā) can 幀的功能。

march1993 march1993

分享
2 喜歡這個(gè)項(xiàng)目
團(tuán)隊(duì)介紹

march1993 march1993

團(tuán)隊(duì)成員

march1993 技術(shù)負(fù)責(zé)人

分享
項(xiàng)目簡(jiǎn)介
本項(xiàng)目在 ab32vg1 開(kāi)發(fā)板上通過(guò)模擬口實(shí)現(xiàn)了 spi 協(xié)議并與 mcp2515 芯片通信,完成了收發(fā) can 幀的功能。
硬件說(shuō)明

使用到的硬件如下:


1. AB32VG1 本尊
本來(lái)是想用自帶的 SPI 收發(fā)器的,奈何沒(méi)有文檔,不過(guò)學(xué)會(huì)了大家的套路,用 GPIO 直接實(shí)現(xiàn)了 SPI 協(xié)議,肝就完事兒了!


2. MCP2515
MCP2515 我用的很多,不過(guò)都是在 arm linux 平臺(tái)上的,直接加載驅(qū)動(dòng)用 SocketCAN 的,這次在嵌入式平臺(tái)上沒(méi)有現(xiàn)成的驅(qū)動(dòng)了,照著大家的代碼寫(xiě),肝就完事兒了!


3. 一汽流出的ARS410OD雷達(dá)
從自己的庫(kù)存里掏出了一個(gè)雷達(dá),沒(méi)想到還是 OEM 品,沒(méi)有 datasheet,本來(lái)是想讀取數(shù)據(jù)做個(gè)上位機(jī)可視化一下的,可惜沒(méi)有格式文檔,肝不動(dòng)了!

軟件說(shuō)明

開(kāi)發(fā)環(huán)境:

- RT-Thread 版本 latest- RT

- Thread Studio版本  V2.1.2

- AB32VG1 開(kāi)發(fā)板 BSP 版本 V2.0


Gitee 項(xiàng)目地址:https://gitee.com/march1993/ab32vg1-rt-thread-mcp2515

我平時(shí)是個(gè)前端工程師,偶爾寫(xiě)寫(xiě) GO 語(yǔ)言后端的,有關(guān)嵌入式的知識(shí)都還停留在學(xué)校里,不過(guò)這次非常出乎意料,RT-Thread 代碼非常好上手,AB32VG1 的開(kāi)發(fā)調(diào)試也絕頂方便。寫(xiě)好代碼,編譯,downloader 直接刷固件然后可以直接讀寫(xiě)串口,可能是我見(jiàn)識(shí)短淺,不過(guò)當(dāng)我第一次看到 downloader 刷完直接有一個(gè) shell 可以用而且代碼里可以用 rt_kprintf 的時(shí)候我是驚呆了的,時(shí)代真的變了,嵌入式開(kāi)發(fā)原來(lái)可以這么容易。


下面一段是設(shè)置 SPI 的代碼


#define __AB32_PORT(port)   GPIO##port
#define __AB32_GET_PIN_A(PIN)  PIN
#define __AB32_GET_PIN_B(PIN)  8 + PIN
#define __AB32_GET_PIN_E(PIN)  13 + PIN
#define __AB32_GET_PIN_F(PIN)  21 + PIN

// PB2 10
// PE5 18
// PE6 19
// PB1 9
#define SOFT_SPI1_BUS_CONFIG { \
    .mosi_pin = 18, \
    .miso_pin = 10, \
    .sclk_pin = 9, \
    .bus_name = "spi0", \
}
// CS Pin  PE6 19
rt_soft_spi_device_attach("spi0", "spi0.0", RT_NULL, 19);


下面一段是初始化 MCP2515 的代碼,挺好用


void mcp2515_initialize(void)
{
    // https://www.cnblogs.com/yikoulinux/p/13706054.html
    mcp2515_reset(); //復(fù)位
    mcp2515_send(0x0f, 0x80); //CANCTRL寄存器--進(jìn)入配置模式 中文DATASHEET 58頁(yè)
    // 可以設(shè)置的波特率 5K 10K 15K 20K 25K 40K 50K 80K 100K 125K 200K 400K 500K 667K 800K 1M
    // 
    https://www.kvaser.com/support/calculators/bit-timing-calculator/
    mcp2515_send(0x2A, 0x00); //CNF1位定時(shí)配置寄器   中文DATASHEET 41-42頁(yè)
    mcp2515_send(0x29, 0x88); //CNF2位定時(shí)配置寄器   中文DATASHEET 41-42頁(yè)
    mcp2515_send(0x28, 0x03); //CNF3位定時(shí)配置寄器   中文DATASHEET 41-43頁(yè)
    mcp2515_send(0x2B, 0x1f);     //CANINTE中斷使能寄存器  中文DATASHEET 50 頁(yè)
    mcp2515_send(0x60, 0x60);     //RXB0CTRL接收緩沖器0 控制寄存器 中文DATASHEET 27 頁(yè)
    //write_byte_2515(0x70, 0x20);   //接收緩沖器1控制寄存器
    mcp2515_bit_modify(0x0C, 0x0f, 0x0f); //BFPCTRL_RXnBF 引腳控制寄存器和狀態(tài)寄存器 中文DATASHEET 29 頁(yè)
    // mcp2515_send(0x0f, 0x40);   //CAN控制寄存器--回環(huán)模式,用于測(cè)試
    mcp2515_send(0x0f, 0x00);   //CAN控制寄存器--正常模式
}


下面一段代碼是用于控制 MCP2515 寄存器的,可以看到這里調(diào)用了 RT-Thread 的 SPI 庫(kù)函數(shù) rt_spi_transfer_message,抽象的還挺好用的。


void mcp2515_send(unsigned char addr, unsigned char data)
{
    struct rt_spi_message message = { 0 };
    unsigned char buf[3] = { 0x02, addr, data };
    message.send_buf = buf;
    message.length = 3;
    message.cs_take = 1;
    message.cs_release = 1;
    rt_spi_transfer_message(spi, &message);
}


本來(lái)還想用 RT-Thread 的 CAN 庫(kù)函數(shù)的,不過(guò)還要實(shí)現(xiàn)完整的協(xié)議棧,肝不動(dòng)了,連著幾天肝到天亮可不太行。

演示效果

下圖是連接示意圖,左邊是MCP2515模塊,中間是 AB32VG1 本尊,右邊是 ARS410OD

ARS410OD 通過(guò) CAN 總線和 MCP2515 相連,MCP2515 通過(guò) SPI 總線和 AB32VG1 相連


IMG_4860.JPG


下圖顯示了從收發(fā)器里讀取出來(lái)的 CAN 幀


IMG_4861.JPG


最后還有一個(gè)視頻可以看,可以看到串口刷刷的在翻頁(yè),數(shù)據(jù)刷的賊快,這說(shuō)明啥,說(shuō)明 AB32VG1 牛逼!



評(píng)論區(qū)(0 )
主站蜘蛛池模板: 女人十六毛片 | 国内久久精品 | 午夜手机福利 | 性欧美久久 | 亚洲综合色在线观看 | 亚洲不卡免费视频 | a成人在线 | 色偷偷免费视频 | 黄色免费的视频 | 天堂网www在线资源网 | 天天搞天天搞 | 亚洲色图综合网 | 特级黄视频 | 国产叼嘿网站免费观看不用充会员 | 欧美成人3d动漫在线播放网站 | 免费国产h视频在线观看 | 欧美影院一区二区 | 人人人干| 亚洲第一精品夜夜躁人人爽 | 色偷偷91久久综合噜噜噜噜 | 色手机在线 | 亚洲国产一区二区三区a毛片 | 日本韩国三级视频 | 9久久精品| 性视频网址 | 国产精品久久免费观看 | 亚洲小younv另类 | 奇米99| 国产人人澡 | 亚洲日本一区二区三区 | 蜜色网| 五月婷婷六月天 | 就操成人网 | 欧美在线网站 | 老色批软件 | 国产精品欧美一区二区 | 午夜黄色小视频 | www.av123| 免费视频性 | 天天摸天天碰天天碰 | 网站大全黄免费 |