[STM32F1] STM32驱动并行式DAC

[复制链接]
117|21
hfdy01 发表于 2025-12-14 20:05 | 显示全部楼层 |阅读模式
用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
CallReceiver 发表于 2025-12-14 20:08 | 显示全部楼层
被采样的数据是什么样的数据啊
boy1990 发表于 2025-12-14 20:11 | 显示全部楼层
会不会数据不稳定啊?
sourceInsight 发表于 2025-12-14 20:12 | 显示全部楼层
非常悲催的我看不懂汇编语言。
feiqi1 发表于 2025-12-14 20:15 | 显示全部楼层
这个速度会不会太快了点
androidbus 发表于 2025-12-14 20:16 | 显示全部楼层
并行的这个速度也可以了的。
litengg 发表于 2025-12-14 20:20 | 显示全部楼层
为什么要要求这么快的速度
qiangweii 发表于 2025-12-14 20:21 | 显示全部楼层
被采样的数据是什么样的数据?
shashaa 发表于 2025-12-14 20:24 | 显示全部楼层
有点难懂,这个速度会不会太快了点
bbapple 发表于 2025-12-14 20:25 | 显示全部楼层
我理解这个硬件不足以达到这么快的变更速度
handleMessage 发表于 2025-12-14 20:29 | 显示全部楼层
DAC能到的话,应该可以了呀
zhouhuanの 发表于 2025-12-14 20:30 | 显示全部楼层
10M应该问题不大,注意优化代码
Listate 发表于 2025-12-14 20:34 | 显示全部楼层
最好改用FSMC总线去操作
Mozarts 发表于 2025-12-14 20:35 | 显示全部楼层
用单片机--SPI--cpld解决吧,一个CPLD8元就解决
_gege 发表于 2025-12-14 20:38 | 显示全部楼层
单片机IO不快,如果DAC速度没问题的话直接用FPGA,。
Edisons 发表于 2025-12-14 20:39 | 显示全部楼层
用STM32驱动AD904E,借用FSMC(如果有的话)应该好些。
wanglaojii 发表于 2025-12-14 20:45 | 显示全部楼层
STM32H7在低温下的性能变化较大,可能需要检查电源电压。
598330983 发表于 2025-12-15 15:58 | 显示全部楼层
用STM32驱动AD904E(一款14位并行式DAC,即送数到IO口即可得到模拟量)
xinpian101 发表于 2025-12-18 17:32 | 显示全部楼层
时钟线低电平->内存取数->送数到IO口->时钟线高电平
天灵灵地灵灵 发表于 2025-12-22 12:26 | 显示全部楼层
时钟线低电平->内存取数->送数到IO口->时钟线高电平
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

1674

帖子

1

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