• 发文
  • 评论
  • 微博
  • 空间
  • 微信

折腾的项目:终于换对MCU了,搞一个SPI的DMA通信

21IC电子网 2021-07-15 09:13 发文

出品 21ic论坛 呐咯密密

从入职新公司后,一个项目我折腾了两年,都是泪,每次以为开发完了,就会出事故,这次保守点,用新塘一定没问题,一定会成功量产,一定不要重新来过。
这个项目经历百般周折,从国外型号最后到新塘,直接给我整吐了,有些是真的难用啊,也是老大难。最后到今天的主角新塘。
刚开始选用了新塘的NUC029,下载资料,搭建环境,串口测试,SPI测试,然后突然发现这玩意没有DMA,白瞎了这么长时间啊,样板都做好了,结果出幺蛾子。
然后在换M031,这次深思熟虑,认为不会有问题了才开搞。作为一个半成熟的程序猿,肯定不能helloword起手了,直接上UART吧。
环境搭建这里就跳过了,没啥用,我还是用KEIL 5 开发,自行下载个PACK包安装就好了。点此前往新塘官网。搜索自己的MCU型号,打开页面,在资源中有文档和软件。



在文档中下载数据手册等文档,在软件中下载例程和工具,软件中最实用的是以下几个软件:


从上到下依次是:官方例程库,Nu_link驱动,外设引脚配置软件,时钟配置软件。
外设引脚配置软件用于快速配置引脚以及复用,该软件只能配置引脚及其功能,不能配置外设等功能呢,例如串口的相关配置,这些事实现不了的。
时钟配置软件仅用于配置系统时钟以及各外设时钟。这两个软件支持导出.c代码。可复制粘贴到自己的工程。
这两个软件都是非常简单的,这里就不赘述了。
但是有一个时钟配置软件有BUG,以我用的M031SE3AE为例,外部时钟最大可使用32M,但是软件中最大只支持24M,希望官方可以修复。



在M031中,区别于我之前用过的其他MCU,在进入中断函数之后,只要读取串口接收寄存器UART_DAT中的值,便可自动清除中断标志,并不需要去操作其他寄存器。非常好用。
DMA的启动和其他的MCU类似,[size=14.6667px]需重新配置传输个数,[size=14.6667px]RAM[size=14.6667px]地址等,再调用一次初始化函数就行。然后利用[size=14.6667px]while (PDMA->DSCT[UART_TX_DMA_CH].CTL        

来源:21ic电子网

声明:本文为OFweek维科号作者发布,不代表OFweek维科号立场。如有侵权或其他问题,请及时联系我们举报。
2
评论

评论

    相关阅读

    暂无数据

    举报文章问题

    ×
    • 营销广告
    • 重复、旧闻
    • 格式问题
    • 低俗
    • 标题夸张
    • 与事实不符
    • 疑似抄袭
    • 我有话要说
    确定 取消

    举报评论问题

    ×
    • 淫秽色情
    • 营销广告
    • 恶意攻击谩骂
    • 我要吐槽
    确定 取消

    用户登录×

    请输入用户名/手机/邮箱

    请输入密码