打印
[技术问答]

HC32F460卡启动文件B .处

[复制链接]
1104|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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等奇怪的地址。
一开始怀疑中断服务函数没有配置,检查下来都是有的。


难道是GD开启DMA后网络速度过快,导致HC32撑不住了?
下面是SPI3的配置


使用特权

评论回复
沙发
tpgf| | 2022-12-3 09:04 | 只看该作者
读flash的0x400地址是要优于程序的,也就是要在程序启动前执行

使用特权

评论回复
评论
sagade 2022-12-4 22:13 回复TA
没明白,我这也没去读Flash啊 
板凳
nawu| | 2022-12-3 10:24 | 只看该作者
这两种不同的驱动方式都会运行到这个位置吗

使用特权

评论回复
地板
aoyi| | 2022-12-3 10:36 | 只看该作者
如果怀疑DMA后网络速度过快的话 可以人为进行 降速处理排除原因吗

使用特权

评论回复
5
zljiu| | 2022-12-3 11:38 | 只看该作者
如果使用普通的驱动方式可以满足要求的话 就不用开dma 了吧

使用特权

评论回复
评论
sagade 2022-12-4 22:14 回复TA
勉强够用了,不折腾了 
6
gwsan| | 2022-12-3 13:17 | 只看该作者
驱动文件使用的是官方提供的文件吗

使用特权

评论回复
7
tfqi| | 2022-12-3 13:29 | 只看该作者
难道是数据接收缓冲做的不到位?

使用特权

评论回复
评论
sagade 2022-12-4 22:23 回复TA
做的一应一答,发起方是460,固定间隔发起,有空再去试试把发送间隔加大点试试。 
8
sagade|  楼主 | 2022-12-4 21:40 | 只看该作者
nawu 发表于 2022-12-3 10:24
这两种不同的驱动方式都会运行到这个位置吗

只有对端开启DMA后,华大的会随机跳到.B处

使用特权

评论回复
9
sagade|  楼主 | 2022-12-4 22:07 | 只看该作者
不想得折腾了,对端不开DMA了,能跑就行了。

使用特权

评论回复
10
sagade|  楼主 | 2022-12-4 22:10 | 只看该作者
还有460的SPI时钟大于12.5MHZ后,波形变锯齿了,像是引脚速度不够快

使用特权

评论回复
11
sagade|  楼主 | 2022-12-4 22:11 | 只看该作者
GD的SPI跑25MHZ的时候波形没问题。有空的话再去试试把SPI时钟引脚,配置成高速推挽方式试试,官方SPI例程是没有配置引脚速度的,不知道行不行的通。

使用特权

评论回复
评论
wubangmi 2022-12-5 08:15 回复TA
默认就是高速推挽的 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

403

帖子

3

粉丝