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

[复制链接]
4073|8
 楼主| npy 发表于 2015-1-26 07:59 | 显示全部楼层 |阅读模式

可能我说的还不够清楚,是这样的:
用STM32驱动AD904E(一款14位并行式DAC,即送数到IO口即可得到模拟量),
时序方法是
时钟线低电平->内存取数->送数到IO口->时钟线高电平
我用库函数编写驱动,数据更新率做到1.3MBaud左右
昨晚用汇编编写,可能不是一条指令一个时钟周期,才能做到3.2MBaud左右
附上代码,求大神优化建议(如能否使用DMA、半字能否提高速度、Thumb指令能否提高速度等),非常感谢!
  1. GPIOA_ODR  EQU 0X4001080C  
  2. ;GPIOA输出,偏移地址0Ch
  3. GPIOB_ODR  EQU 0X40010C0C
  4. ;GPIOB输出,偏移地址0Ch
  5. HIGH           EQU 0XFFFFFFFF
  6.   ;时钟线高电平
  7. LOW        EQU 0X00000000  
  8. ;时钟线低电平
  9.          AREA TEST,CODE,READONLY
  10.          EXPORT run
  11. run         LDR R6,=GPIOA_ODR
  12.          LDR R7,=GPIOB_ODR
  13.          LDR R8,=HIGH
  14.          LDR R9,=LOW
  15.          LDR R10,=datatable
  16.          ADD R11,R10,#8;4*2=8
  17.          MOV R5,R10
  18. loop STR R9,[R7]
  19.          LDR R12,[R10],#4
  20.          STR R12,[R6]
  21.          STR R8,[R7]
  22.          CMP R10,R11
  23.          MOVEQ R10,R5
  24.          B loop
  25.          NOP
  26. datatable DCD 0x00000000,0xFFFFFFFF
  27.          NOP
  28.          NOP
  29.          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?  
huangqi412 发表于 2015-1-26 09:57 | 显示全部楼层
似乎一般单片机的DMA都不支持端口寄存器。  只能FSMC了,估计也到不了10M?  
mmuuss586 发表于 2015-1-26 12:12 | 显示全部楼层

用中断触发FSMC DMA模式;
苏山人家 发表于 2015-1-26 17:55 来自手机 | 显示全部楼层
首先可以实现dma>gpio的,利用dma的m2m就可以。
至于速率问题这个不能保证,dma数据传输不是稳定速率,涉及到总线仲裁。
 楼主| npy 发表于 2015-1-26 21:25 | 显示全部楼层
苏山人家 发表于 2015-1-26 17:55
首先可以实现dma>gpio的,利用dma的m2m就可以。
至于速率问题这个不能保证,dma数据传输不是稳定速率,涉及 ...

请问,假如STM32F103只是做这一项工作,可以稳定吗?
huangqi412 发表于 2015-1-26 23:04 来自手机 | 显示全部楼层
npy 发表于 2015-1-26 21:25
请问,假如STM32F103只是做这一项工作,可以稳定吗?

cpld
您需要登录后才可以回帖 登录 | 注册

本版积分规则

npy

26

主题

32

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部