[应用相关]

并行DAC的数据更新速率问题

[复制链接]
786|10
手机看帖
扫描二维码
随时随地手机跟帖
huwr|  楼主 | 2019-2-19 18:28 | 显示全部楼层 |阅读模式
DAC, IO, gp, ST, pi
STM32驱动并行式DAC,数据更新速率能否做到10M?
用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
songqian17| | 2019-2-19 18:33 | 显示全部楼层

借用FSMC(如果有的话)应该好些..

使用特权

评论回复
zwll| | 2019-2-19 18:37 | 显示全部楼层

如果DAC速度没问题的话直接用FPGA,单片机IO不快。

使用特权

评论回复
chuxh| | 2019-2-19 18:40 | 显示全部楼层
应该是可以达到的,把指令放到RAM中执行,这样就省去了取flash的等等时间,主频多少?GPIO总线时钟有没有分频?

使用特权

评论回复
jlyuan| | 2019-2-19 18:44 | 显示全部楼层

还是用单片机》SPI>cpld解决吧,一个CPLD8元就解决,EMP240

使用特权

评论回复
stly| | 2019-2-19 18:47 | 显示全部楼层

最好改用FSMC总线去操作;
程序处理,够呛吧;
你改成汇编应该最快了

使用特权

评论回复
llljh| | 2019-2-19 18:49 | 显示全部楼层
10M应该问题不大,注意优化代码

使用特权

评论回复
dingy| | 2019-2-19 18:53 | 显示全部楼层

DAC能到的话,应该可以了

使用特权

评论回复
huwr|  楼主 | 2019-2-19 18:56 | 显示全部楼层

嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
renzheshengui| | 2019-3-6 12:00 | 显示全部楼层
这么快的更新速度  输出的话能支撑吗

使用特权

评论回复
wakayi| | 2019-3-6 12:08 | 显示全部楼层
硬件不足以达到这么快的变更速度吧

使用特权

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

本版积分规则

780

主题

8627

帖子

5

粉丝