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

2019-03-23 18:44发布

可能我说的还不够清楚,是这样的:
用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
  1. <FONT color=rgb(68,68,68)></FONT>
复制代码






此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
EETUX
1楼-- · 2019-03-24 02:23
/ 借用FSMC(如果有的话)应该好些..
laotui
2楼-- · 2019-03-24 04:40
 精彩回答 2  元偷偷看……
fxyc87
3楼-- · 2019-03-24 05:23
应该是可以达到的,把指令放到RAM中执行,这样就省去了取flash的等等时间,主频多少?GPIO总线时钟有没有分频?
fxyc87
4楼-- · 2019-03-24 05:29
还是用单片机》SPI>cpld解决吧,一个CPLD8元就解决,EMP240
NPY
5楼-- · 2019-03-24 10:55
 精彩回答 2  元偷偷看……
zhaojun_xf
6楼-- · 2019-03-24 16:09
10M应该问题不大,注意优化代码。。。。。。

一周热门 更多>