打印
[应用相关]

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

[复制链接]
1460|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CaLipton|  楼主 | 2017-10-19 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
沙发
Rospiers| | 2017-10-19 16:36 | 只看该作者
借用FSMC(如果有的话)应该好些..

使用特权

评论回复
板凳
Lewisnx| | 2017-10-19 16:50 | 只看该作者
如果DAC速度没问题的话直接用FPGA,单片机IO不快。

使用特权

评论回复
地板
CCompton| | 2017-10-19 17:02 | 只看该作者
应该是可以达到的,把指令放到RAM中执行,这样就省去了取flash的等等时间,主频多少?GPIO总线时钟有没有分频?

使用特权

评论回复
5
Richardd| | 2017-10-19 17:27 | 只看该作者
还是用单片机》SPI>cpld解决吧,一个CPLD8元就解决,EMP240

使用特权

评论回复
6
mmuuss586| | 2017-10-19 17:28 | 只看该作者
最好改用FSMC总线去操作;
程序处理,够呛吧;
你改成汇编应该最快了

使用特权

评论回复
7
Erichk| | 2017-10-19 18:32 | 只看该作者
10M应该问题不大,注意优化代码

使用特权

评论回复
8
Thorald| | 2017-10-19 18:39 | 只看该作者
DAC能到的话,应该可以了

使用特权

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

本版积分规则

126

主题

369

帖子

0

粉丝