[技术问答] HC32F460卡启动文件B .处

[复制链接]
 楼主| sagade 发表于 2022-11-5 17:11 | 显示全部楼层 |阅读模式
HC32F460使用3线SPI驱动W5500与另一端的W5500通信,另一端的主控是GD32F405
HC32F460使用的2.0.0的库文件,还没时间换成3.0.0的库,SPI也还没有使用DMA来接收发送

单独测试对端GD32F405与PC之间通讯,不管开不开DMA,通讯始终正常。
当对端的GD32F405使用普通的SPI驱动W5500时,HC32F460运行正常,通信也没有问题
当对端的GD32F405的SPI开启DMA驱动W5500时,HC32F460跑了一段时间后卡在.S文件的B .处,卡死时间随机的
卡死后,Show Caller Code,出来个0x303c0002等奇怪的地址。
一开始怀疑中断服务函数没有配置,检查下来都是有的。

微信截图_20221105091741.png
难道是GD开启DMA后网络速度过快,导致HC32撑不住了?
下面是SPI3的配置
微信截图_20221105170925.png

tpgf 发表于 2022-12-3 09:04 | 显示全部楼层
读flash的0x400地址是要优于程序的,也就是要在程序启动前执行

点评

没明白,我这也没去读Flash啊  发表于 2022-12-4 22:13
nawu 发表于 2022-12-3 10:24 | 显示全部楼层
这两种不同的驱动方式都会运行到这个位置吗
aoyi 发表于 2022-12-3 10:36 | 显示全部楼层
如果怀疑DMA后网络速度过快的话 可以人为进行 降速处理排除原因吗
zljiu 发表于 2022-12-3 11:38 | 显示全部楼层
如果使用普通的驱动方式可以满足要求的话 就不用开dma 了吧

点评

勉强够用了,不折腾了  发表于 2022-12-4 22:14
gwsan 发表于 2022-12-3 13:17 | 显示全部楼层
驱动文件使用的是官方提供的文件吗
tfqi 发表于 2022-12-3 13:29 | 显示全部楼层
难道是数据接收缓冲做的不到位?

点评

做的一应一答,发起方是460,固定间隔发起,有空再去试试把发送间隔加大点试试。  发表于 2022-12-4 22:23
 楼主| sagade 发表于 2022-12-4 21:40 | 显示全部楼层
nawu 发表于 2022-12-3 10:24
这两种不同的驱动方式都会运行到这个位置吗

只有对端开启DMA后,华大的会随机跳到.B处
 楼主| sagade 发表于 2022-12-4 22:07 | 显示全部楼层
不想得折腾了,对端不开DMA了,能跑就行了。
 楼主| sagade 发表于 2022-12-4 22:10 | 显示全部楼层
还有460的SPI时钟大于12.5MHZ后,波形变锯齿了,像是引脚速度不够快
 楼主| sagade 发表于 2022-12-4 22:11 | 显示全部楼层
GD的SPI跑25MHZ的时候波形没问题。有空的话再去试试把SPI时钟引脚,配置成高速推挽方式试试,官方SPI例程是没有配置引脚速度的,不知道行不行的通。

点评

默认就是高速推挽的  发表于 2022-12-5 08:15
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

434

帖子

4

粉丝
快速回复 返回顶部 返回列表