资深版主
 
- 积分
- 4306
- 金钱
- 4306
- 注册时间
- 2018-6-30
- 在线时间
- 808 小时
|
本帖最后由 1208 于 2019-4-18 12:51 编辑
1)首先,要先明确“数字至模拟转换器 x”的来源
才能知道数据是如何转换得来的
2)一般数据被写入到 DHRx 寄存器后,
DAC需要外部事件(如定时器定时)触发数据的转换
将DAC_DHRx 中的数据传至DAC_DORx
3)由于是双DAC通道用到了DAC_DHR12RD_ ADDRESS 是寄存器 DHR12RD 的地址
─ 12位数据右对齐:用户须将DAC通道1数据写入寄存器DAC_DHR12RD[11:0]位(实际是存
入寄存器DHR1[11:0]位),将DAC通道2数据写入寄存器DAC_DHR12RD[27:16]位(实际是
存入寄存器DHR2[11:0]位),具体可以看下中文参考手册
outdata = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
4)使能DAC的DMA请求 对 DAC1 和 2 的操作是同步的,所以只要把 DMA 与
DAC 通道 2 关联起来即可,当使用 DMA 设置通道 2 的数据值时, 同时更新通道 1 的内容
5)定时器每间隔一定的时间就会触发 DMA 搬运双通道正弦波表的
一个数据到 DAC 双通道寄存器进行转换,每完成一个周期后 DMA 重新开始循环,
从而达到连续输出波形的目的
6)周期是5us,由T=1/f得,f=1/T=20KHZ
产生的正弦波是20KHZ
DMA通道图
DAC_DHRx 中的数据传至DAC_DORx
DAC输出正弦波效果图,也可以通过串口输出数据
|
|