一、簡(jiǎn)介
Vision-Board 開(kāi)發(fā)板是 RT-Thread 推出基于瑞薩 Cortex-M85 架構(gòu) RA8D1 芯片,為工程師們提供了一個(gè)靈活、全面的開(kāi)發(fā)平臺(tái),助力開(kāi)發(fā)者在機(jī)器視覺(jué)領(lǐng)域獲得更深層次的體驗(yàn)。
Vision Board搭載全球首顆 480 MHz Arm Cortex-M85芯片,擁有Helium和TrustZone技術(shù)的加持。SDK包里集成了OpenMV機(jī)器視覺(jué)例程,配合MicroPython 解釋器,使其可以流暢地開(kāi)發(fā)機(jī)器視覺(jué)應(yīng)用。
二、環(huán)境搭建
(一)創(chuàng)建工程
通過(guò)RT-Thread官方提供的RT-Studio IDE,開(kāi)發(fā)者可以很輕松的搭建基于Vision-Board開(kāi)發(fā)板的工程。
至于開(kāi)發(fā)板SDK和各種工具(包括ARM CC, PyOCD等)的更新,直接參考官方指南(Vision-Board (rt-thread.org)),比較清楚。
(二)SPI配置
R7FA8D1BHECBD SPI內(nèi)部框圖如下:
因?yàn)槟康氖菧y(cè)試SPI,看了下板子的SPI引出情況,樹(shù)莓派引腳看了下沒(méi)硬件SPI,只有幾個(gè)軟SPI沒(méi)意思,放棄。然后看到RW007的針腳上給了個(gè)SPI1,好就這個(gè)測(cè)試。
需要在RT-Studio中選擇打開(kāi)SPI1總線。
(三)FSP配置
瑞薩的這個(gè)RASC功能還是很強(qiáng)大,堪比STM的CubeMX。配置Vision-Board開(kāi)發(fā)板需要更新FSP到5.1版本。在建好后的工程中,打開(kāi)RASC來(lái)配置具體外設(shè)驅(qū)動(dòng)。
首先在Pins選項(xiàng)中配置好SPI1相關(guān)pin,選擇混合模式。
然后在Stacks選項(xiàng)中新建r_spi_b類型的SPI1,具體屬性如下:
選擇好之后,點(diǎn)擊產(chǎn)生工程代碼按鈕,生成相關(guān)驅(qū)動(dòng)源文件。
三、SPI測(cè)試
測(cè)試SPI主控的外部loopback,直接短接SPI1的MISO和MOSI針腳,測(cè)試數(shù)據(jù)發(fā)送是否能收到。
#define SPI_NAME "spi10" #define CS_PIN BSP_IO_PORT_04_PIN_13 static struct rt_spi_device *spi_dev; /* attach spi device */ static int rt_spi_device_init(void) { struct rt_spi_configuration cfg; rt_hw_spi_device_attach("spi1", SPI_NAME, CS_PIN); cfg.data_width = 8; cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB | RT_SPI_NO_CS; cfg.max_hz = 1 *1000 *1000; spi_dev = (struct rt_spi_device *)rt_device_find(SPI_NAME); if (RT_NULL == spi_dev) { rt_kprintf("spi sample run failed! can't find %s device!n", SPI_NAME); return -RT_ERROR; } rt_spi_configure(spi_dev, &cfg); return RT_EOK; } INIT_APP_EXPORT(rt_spi_device_init); /* spi loopback mode test case */ static int spi_sample(int argc, char **argv) { rt_uint8_t t_buf[32], r_buf[32]; int i = 0; static struct rt_spi_message msg1; for (i = 0; i < sizeof(t_buf); i++) { t_buf[i] = i; } msg1.send_buf = &t_buf; msg1.recv_buf = &r_buf; msg1.length = sizeof(t_buf); msg1.cs_take = 1; msg1.cs_release = 1; msg1.next = RT_NULL; rt_spi_transfer_message(spi_dev, &msg1); rt_kprintf("spi rbuf : "); for (i = 0; i < sizeof(r_buf); i++) { rt_kprintf("%x ", r_buf[i]); } rt_kprintf("nspi loopback mode test over!n"); return RT_EOK; } MSH_CMD_EXPORT(spi_sample, spi loopback test);
編譯后生成可執(zhí)行文件,下載到Vision Board開(kāi)發(fā)板:
四、運(yùn)行測(cè)試
打開(kāi)串口連上Vision Board開(kāi)發(fā)板,還是熟悉的logo:
list device可以看到SPI1總線和SPI10設(shè)備都在。
接下來(lái)根據(jù)電路圖,用鑷子將SPI的MISO和MOSI針腳連起來(lái)。
輸入測(cè)試命令spi_sample,即可得到測(cè)試結(jié)果:
五、結(jié)論
本文通過(guò)創(chuàng)建RT-Studio工程,實(shí)現(xiàn)了Vision Board上的SPI設(shè)備驅(qū)動(dòng)配置和簡(jiǎn)單的SPI主控的外部loopback功能測(cè)試,依托于RT-Studio和FSP強(qiáng)大的功能,用戶可以很方便的完成功能實(shí)現(xiàn)。
審核編輯 黃宇
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423138 -
測(cè)試
+關(guān)注
關(guān)注
8文章
5269瀏覽量
126599 -
機(jī)器視覺(jué)
+關(guān)注
關(guān)注
161文章
4369瀏覽量
120280 -
SPI
+關(guān)注
關(guān)注
17文章
1706瀏覽量
91502
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論