CPK-RA6M4 MCU评估板 是瑞萨电子推出的基于ARM Cortex M33内核芯片。在此增加了连接网络的RW007和W5500模块。使其方便连接互联网。
基于RT-THREAD STUDIO 工程。
软件框架及使用rt-thread资源如下图:
占用RA6M4板上资源如下图:
项目是通过W5500连接阿里云IOT。实现MQTT的功能。因同时使用了RW007wifi模块,通过SPI1连接的。所以准备实现有线无线双上网。于是就准备利用SPI0与W5500通讯。
在配置SPI0时有几个地方要特别注意。
1 SPI MODE 选项要改成SPI OPERATION
默认是Clock Synchronous Operation
2 取消spi0 的SSLA0 配置改为在Pins中设置。P205设成Output mode(Initial High)
3 Callback 回调函数改成spi0_callback
4 W5500的中断引脚选择PMODA上的P06。需要注意的是在配置IRQ11时Trigger
默认为Rising
要改成Falling
以上配置完成后可以初始化W5500。但会出现spi0 write failed
错误。
仔细对照SPI1的设置都没有问题。
后来经过分析发现在RT-THREAD setting中SPI选项中没有选择DTC,但SPI0中默认的是Enable Support for using TDC--- Enabled
。
把这个选项改成Disabled
驱动成功。
同样在SPI1中设置成Enabled 是没有问题的。这点一定要注意!!!
至此W5500已经可以正常联网。但在连接阿里云的IOT会出现hard fault on thread: tshell
和bus fault:
错误报警。
经查找定位到wizchip
_dns.
c中int16_t dns_makequery(uint16_t op, char * name, uint8_t * buf, uint16_t len)
函数,监控分析后发现char sname[MAXCNAME];
变量数值太小。
阿里云iot网址要5-60个字符。造成cp错误error:Cannot access memory at address xxxxxxx
更改wizchip_dns.h中的为#define MAX_DOMAIN_NAME 256
原来是16对于太长的网址会造成内存地址错误。
瑞萨配置软件中ADC采样模式Mode默认是Single Scan
这样要连续采样结果就是第一次正常,后面的值就为0了。需要把Mode修改为Continuous Scan
,才可以循环连续读取。
阿里云数据变化对比
https://gitee.com/plcprosunway/rt-thread-ra6m4
https://www.bilibili.com/video/BV1t3411G7rn/?vd_source=d7cf337e889a6fabab42a74bc87c5601
https://www.bilibili.com/video/BV1xt4y1H7AM/?vd_source=d7cf337e889a6fabab42a74bc87c5601
https://www.bilibili.com/video/BV16S4y1t7jG/?vd_source=d7cf337e889a6fabab42a74bc87c5601
https://www.bilibili.com/video/BV1DT411j7Px/?vd_source=d7cf337e889a6fabab42a74bc87c5601
https://www.bilibili.com/video/BV1Pa411S7V3/?vd_source=d7cf337e889a6fabab42a74bc87c5601
这就没了?后续捏?
是不是 手滑 点了 【发布文章】😁
边写边提交,
@plcpro
文章小节标题请用markdown的标题功能,不要用加粗,这样能自动生成目录。