1.前言說明
1.1 本章內容
第一次接觸RTT是在2022年的參加的系統集成與芯片設計大賽,當時報名了RTT賽道從此就打開了我使用RTT的大門,RTT是一個非常好的實時操作系統,擁有很多的組件包以及功能,好了回歸正題,今天使用開發板進行一個W5500 TCP通訊的測評。
1.2 模塊介紹
我們通過查閱數據手冊發現RA6M3 HMI Board開發板是具有兩個硬件SPI的,這里我們使用SPI1與W5500進行通訊,通過重映射方式設置以下IO口作為SPI引腳配置連接方式如下所示
P202——>MISO
P203——>MOSI
P204——>RSPCK
P009——>CS
1.3 開發環境
開發軟件:RT-Thread Studio 2.2.6版本+FSP3.5
下載與調試:板載DAP-Link
2.開發過程
2.1 新建文件
選擇文件-新建-RT-Thread項目,選擇基于開發板 選中HMI Board即可,調試器我選擇DAP-Link,當然也可以選擇其他的調試器因為板載帶了調試起來就畢竟方便,右側RTT官方還貼心的給出了原理圖以及數據手冊供大家參考,因為我這有這個名字了所以就報錯提醒了一下
2.2 Studio配置SPI以及編譯
先打開RT-Thread Setting設置,然后選擇硬件,使能SPI總線以及使能SPI1
接著寫一段SPI初始化代碼以及將設備掛載到總線上,隨后我們編譯一下代碼查看一下設備是否掛載上
#define SPI_Name "spi1"
struct rt_spi_device spi_device;
void W5500_SPI_Init(void)
{
#define W5500_CS1 BSP_IO_PORT_00_PIN_10 / W5500 CS pins */
static rt_device_t spi;
rt_err_t spi_mont;
struct rt_spi_configuration cfg;
spi = rt_device_find(SPI_Name);
uint8_t test[5] = "Test";
if(!spi)
{
rt_kprintf("spi no findrn");
}
else {
rt_kprintf("spi get readyrn");
}
spi_device = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device));
spi_mont = rt_spi_bus_attach_device_cspin(spi_device,"spi10","spi1",RT_NULL,RT_NULL);
if(spi_mont != RT_EOK)
{
LOG_E("mount spi errorrn");
}
else {
LOG_E("spi successrn");
cfg.data_width = 8;
cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB; //LL模式
cfg.max_hz = 10 *1000 *1000; //10M
rt_spi_configure(spi_device, &cfg);
// rt_spi_send(spi_device, test, 4);
}
}
INIT_APP_EXPORT(W5500_SPI_Init); //自動初始化
通過杜邦線與W5500連接進行測試
可以看到我們已經成功把設備掛載上了
2.3 測試通訊
編寫完W5500驅動后使用ping 命令測試以下是否移植成功,官方有W5500軟件包,不過我直接自己移植了一個,可以看到可以成功ping通并且TCP通訊也是正常的。
3 心得體會
一開始移植上去后發現無法正常ping通數據,發現使用rt_spi_send函數時候發送一次數據就拉回去片選了,在發送32位地址時候片選沒有連續發送8位地址數據的時候是正常,就導致無法ping通設備,可以更換rt_spi_send_then_send發送函數,或者用pin框架寫一個片選,都是可以的,雖然是第一次接觸瑞薩的板子不過RTT做了很好的適配,在很大程度上簡化了開發難度,這次只測試了一下SPI與W5500的通訊,后續有時間的話可以出一個騎行碼表,好了本次測評就到這了感謝大家的觀看。
-
SPI接口
+關注
關注
0文章
260瀏覽量
34583 -
調試器
+關注
關注
1文章
306瀏覽量
23847 -
W5500
+關注
關注
5文章
45瀏覽量
17701 -
TCP通信
+關注
關注
0文章
146瀏覽量
4295 -
RTThread
+關注
關注
8文章
132瀏覽量
41012 -
RA6M3
+關注
關注
0文章
52瀏覽量
141
發布評論請先 登錄
相關推薦
評論