STM32驱动并行式DAC,数据更新速率能否做到10M?
时间:10-02
整理:3721RD
点击:
可能我说的还不够清楚,是这样的:
用STM32驱动AD904E(一款14位并行式DAC,即送数到IO口即可得到模拟量),
时序方法是
时钟线低电平->内存取数->送数到IO口->时钟线高电平
我用库函数编写驱动,数据更新率做到1.3MBaud左右
昨晚用汇编编写,可能不是一条指令一个时钟周期,才能做到3.2MBaud左右
附上代码,求大神优化建议(如能否使用DMA、半字能否提高速度、Thumb指令能否提高速度等),非常感谢!
用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
一起学习,共同努力。