历史上的今天
今天是:2024年11月03日(星期日)
2021年11月03日 | STM32的DMA串口直通
2021-11-03 来源:eefocus
搞这个,起因呢,公司产品里ZigBee模块固件版本不对,一大批产品需要二次升级。
需要升级的ZigBee模块是直接与stm32相连的,没有引出升级口,所以得搞个串口直通程序,通过232转MCU再转ZigBee,来进行升级。
一开始直接中断互通,结果呢,通倒是可以通,一升级固件就不行了,大概是因为数据量较大吧。
所以用了DMA,之前也没用过DMA,就慢慢学慢慢模仿着改呗。
这里要涉及到一个点,DMA的外设到外设,经常写的是,DMA只有外设到内存、内存到外设、内存到内存三种模式。
实际上,DMA是可以外设直接到外设的,而且用法非常非常简单,直接设置成外设到内存或内存到外设模式,然后把内存直接改成外设的地址,就可以了。
下面是我的程序,单片机是STM32F407,usart3和usart6 互通。
https://download.csdn.net/download/qq_36192233/11983754
说是互通,其实只有一路是DMA外设到外设。
一方面,只有下载一向有大量数据;一方面,usart3返回usart6,DMA外设到外设行不通。
这一点卡了我很久,一路我没多久就调好了,但返回的那一路我懵了几天。
我就搞不懂,凭啥数据进的来回不去,明明是几乎一模一样的配置。
我以为是配置问题,各种在网上找DMA配置的程序,然后对比参照着改配置,无果。
最后才发现,这一路就是通不了的。

注意图片下那一行,简单地说,所有的用DMA1的外设,都搞不通,人家DMA1外设端口压根不在总线矩阵。
所以,用外设到外设之前,必须得先考虑一下这一点,不行的话,还是老老实实配两次DMA加好中断吧。
特别是stm32F4系列,据说f1系列都是可以的
史海拾趣
|
学51时做过很多东西,但是很多都没有留下完整的资料。这里把一个我做的有完整资料的东西发上来,以后整理好东西也陆续发上来。 虽然这些东西都很过时了,不过有兴趣的朋友不妨做一个试。 电子定时器: 最初的是为了电池充电器而设计的 ...… 查看全部问答> |
|
ZigBee® Alliance和Wi-Fi Alliance®今天宣布双方达成一项协议,双方将在针对智能电网应用的无线家庭局域网络(HAN)领域开展合作。合作最初的重点将是ZigBee Smart Energy 2.0,即面向智能电网家庭的新一代能源管理协议,其基础则是当今颇为 ...… 查看全部问答> |
|
现在想用一款集成24位AD的CPU,做一个高精度的电子秤,工业测量用的。准备做成亚当模块的样子。 我上ADI官方网站查过好像7060还可以,但是好像国内不好买不到片子,而且价钱很贵。51内核的倒是有24位的,只是好久不用51了,不知道开发起来 ...… 查看全部问答> |
|
在三星6410BSP中,有个OV9650的摄像头模组驱动代码,在s3c6410_camera.h中有对于两个缓冲区的定义:一个是用来捕捉静态及动态视频的,一个是用于预览的。 #define MAX_HW_FRAMES &nbs ...… 查看全部问答> |
|
在WINCE下的触摸屏的校正程序中,我是直接调用的这个系统函数TouchCalibrate,呵呵……自己还没有想到写的方法。但是没有这个的源码,在TouchCalibrateUI_DrawMainScreen打印校准操作说明信息中,UseEnterEsc这个函数是怎么操作的?在屏幕我要显示 ...… 查看全部问答> |
|
请问,通过VS2005怎样开发基于特定设备(windows xp embedded)的应用? 这两天刚开始了解嵌入式开发,初步印象是,windows embedded 包括windows ce和windows xp embedded两种操作系统;而VS2005中的Mobille和phone是基于windows ce系统的集成开发 ...… 查看全部问答> |
|
为什么产生错误Fixing up unaligned userspace access 要把很多.ko文件加载到目标板上,用一个loadmod.sh文件来实现,里面包括了insmod、mknod等必要的命令等等,但每次source loadmod.sh之后,大多会出现如下错误提示 Fixing up unaligned userspace access in \"sh\" pid=25 pc=0x0042ee94 ins=0x624 ...… 查看全部问答> |




