打印
[STM32F1]

请教香版STM32F103的DMA是否支持bitbanding访问

[复制链接]
1680|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
楚天|  楼主 | 2014-1-7 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题
用ST的DMA库,发现DMA的设备地址或内存地址一旦设置位bitbanding别名时即出现TE错误。用正常的IO地址就没问题
我这个案子需要定时(100us)检测IO状态。如果用中断方式会耗费很多cpu时间,如果访问IO空间倒是可以实现,但是缓存开销太大,并且需要CPU进行判断。
沙发
楚天|  楼主 | 2014-1-7 11:04 | 只看该作者
ST怎么回事呢?
放年假放到4号,打电话打出来个赛意法,偌大个公司没有技术支持部门……

使用特权

评论回复
板凳
grant_jx| | 2014-1-7 11:33 | 只看该作者
你打错了,赛意法不是ST!好像是深圳赛格集团与ST合作做IC封装的工厂,在深圳福田保税区。
你问MCU,应该搜意法半导体。

你在楼主位问的问题,我刚才也试了下代码,用别名出错了。

使用特权

评论回复
地板
楚天|  楼主 | 2014-1-7 12:25 | 只看该作者
是的。我用别名也是出错。怀疑DMA的总线译码不支持别名区。但是ARM的文档里边提到说别名区就像正常地址一样。
不甘心啊。
搜到意法的办事处也是不提供支持。只是让我去找销售商的支持。但是艾瑞的支持又跳槽到意法了。郁闷哦。这点事都拖了两个月了。
ST的巡讲那个ppt还把别名区转换的地址弄错了,可见他们根本没对代码做过测试。
我记得在坛子里有个帖子问的别的问题引出的bitband问题,香版回复说是支持的。不然我也就放弃这个用法了。
如果别名区能够实现,我只要用128bytes就可以搞定,cpu处理起来还很容易,要是用普通地址,需要1024byte,处理起来还麻烦。如果用中断查询,开销就太大了。

使用特权

评论回复
5
楚天|  楼主 | 2014-1-7 13:26 | 只看该作者
ARM那边只能查到m3用的是pl230的DMA控制器,没有提及该DMAC支持的地址范围。也没有提及TE错误的产生机制。

使用特权

评论回复
6
楚天|  楼主 | 2014-1-7 13:42 | 只看该作者
有这么一段关于TE的描述
When HIGH, it indicates that an ERROR has occurred on the AHB bus. When an ERROR occurs, the controller disables the active DMA channel by writing to the appropriate bit in the chnl_enable_set Register.
结合ST的RM0008中“读写一个保留的地址区域,将会产生DMA传输错误。”以及stm32f10x的地址空间分布来看,从0x4002 3400开始,更高的地址是出于reserved状态的。
由此,可以给出结论,STM32F10x的DMA无法访问任何别名区地址。因为别名区地址处于DMA访问的范围之外!!

使用特权

评论回复
7
lxh413458727| | 2015-6-26 16:36 | 只看该作者
我也是DMA操作位带别名区,折腾几天了。
直接给位带别名区地址赋值是可行的,但DMA操作无效。
找了几天相关资料及应用,今天看到楼主的贴子,看来是不行的了。

使用特权

评论回复
8
598330983| | 2015-6-26 20:28 | 只看该作者
没用过这个方法,应该不行吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

58

帖子

2

粉丝