继续STM32G0 HAL库从机SPI+DMA的总结

    上面一篇文章基本上是解决了,不管是主机读取不完整还是CLK受干扰后,怎么让从机重新回到正轨上来的办法;上面是直接用的DMA方式传输,并且没有用到中断,这在传输不很频繁时,没啥问题,并且从机传输的数据,只需要在主程序中根据情况更改就可以;但是如果传输非常频繁,使用这种方式会出现主机收到的数据绝大数是正确的,但有时出现错误;这个估计是传输速度快,并且频繁更改数据,在数据已经更改后,但DMA传输的还是原来的数据造成;

这样随着调试,通过了2种方式解决:

第一种方式,所有配置和流程都和上一篇一样,只是在主程序中,在需要更改数据的地方,重新复位一次通信;

第二种方式,就是使用DMA的中断处理,这里就和上一篇不太一样了,首先就是DMA的传输需要改成一次,而不是循环了,在一个就是需要打开DMA发送中断,这样就可以在DMA中断里面,进行数据更改:

中断优先级设成最高即可,并且DMA的中断不需要再专门打开;

那么在中断函数中,只需要判断是否发送完成,然后更改数据:

这样就可以随时更改需要传输的数据;目前调试出了这2种,是否还有其它更简单或者高效的方式,目前就不知道了,毕竟项目时间比较紧;有更好的方式,还请大家不吝赐教;

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值