打印
[STM32F1]

STM32驱动并行式DAC,数据更新速率能否做到10M?

[复制链接]
3179|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
npy|  楼主 | 2015-1-26 07:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

可能我说的还不够清楚,是这样的:
用STM32驱动AD904E(一款14位并行式DAC,即送数到IO口即可得到模拟量),
时序方法是
时钟线低电平->内存取数->送数到IO口->时钟线高电平
我用库函数编写驱动,数据更新率做到1.3MBaud左右
昨晚用汇编编写,可能不是一条指令一个时钟周期,才能做到3.2MBaud左右
附上代码,求大神优化建议(如能否使用DMA、半字能否提高速度、Thumb指令能否提高速度等),非常感谢!
GPIOA_ODR  EQU 0X4001080C  
;GPIOA输出,偏移地址0Ch
GPIOB_ODR  EQU 0X40010C0C
;GPIOB输出,偏移地址0Ch
HIGH           EQU 0XFFFFFFFF
  ;时钟线高电平
LOW        EQU 0X00000000  
;时钟线低电平
         AREA TEST,CODE,READONLY
         EXPORT run
run         LDR R6,=GPIOA_ODR
         LDR R7,=GPIOB_ODR
         LDR R8,=HIGH
         LDR R9,=LOW
         LDR R10,=datatable
         ADD R11,R10,#8;4*2=8
         MOV R5,R10
loop STR R9,[R7]
         LDR R12,[R10],#4
         STR R12,[R6]
         STR R8,[R7]
         CMP R10,R11
         MOVEQ R10,R5
         B loop
         NOP
datatable DCD 0x00000000,0xFFFFFFFF
         NOP
         NOP
         END
沙发
mark0668| | 2015-1-26 08:05 | 只看该作者
直接控制IO口是不行的。

使用特权

评论回复
板凳
aozima| | 2015-1-26 09:42 | 只看该作者
AD连接在FSMC上面,然后用TIM触发DMA

使用特权

评论回复
地板
huangqi412| | 2015-1-26 09:52 | 只看该作者
似乎一般单片机的DMA都不支持端口寄存器。  只能FSMC了,估计也到不了10M?  

使用特权

评论回复
5
huangqi412| | 2015-1-26 09:57 | 只看该作者
似乎一般单片机的DMA都不支持端口寄存器。  只能FSMC了,估计也到不了10M?  

使用特权

评论回复
6
mmuuss586| | 2015-1-26 12:12 | 只看该作者

用中断触发FSMC DMA模式;

使用特权

评论回复
7
苏山人家| | 2015-1-26 17:55 | 只看该作者
首先可以实现dma>gpio的,利用dma的m2m就可以。
至于速率问题这个不能保证,dma数据传输不是稳定速率,涉及到总线仲裁。

使用特权

评论回复
8
npy|  楼主 | 2015-1-26 21:25 | 只看该作者
苏山人家 发表于 2015-1-26 17:55
首先可以实现dma>gpio的,利用dma的m2m就可以。
至于速率问题这个不能保证,dma数据传输不是稳定速率,涉及 ...

请问,假如STM32F103只是做这一项工作,可以稳定吗?

使用特权

评论回复
9
huangqi412| | 2015-1-26 23:04 | 只看该作者
npy 发表于 2015-1-26 21:25
请问,假如STM32F103只是做这一项工作,可以稳定吗?

cpld

使用特权

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

本版积分规则

npy

26

主题

32

帖子

0

粉丝