完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
你自己写的程序遇到什么问题了?
|
|
|
|
|
|
我就是想问下,这样写对吗?后面需要发送一些指令,可是没什么效果
|
|
|
|
|
|
整体上是对的,
首先确定SYNC = 1这样的操作在STM32是否能够控制对应的I/O输出高电平,因为只有51才会这样操作 SYNC相当于传统SPI的CS引脚,在低电平时接受SDIN引脚的数据。 LDAC用于更新DAC的数据输出,一搬先将数据写入DAC,然后将LDAC拉低,但是如果LDAC一直是低的时候,DAC输出会在SYNC上升沿更新,所以最后还要将SYNC设置为高才行。 以下是引脚说明: LDAC:低电平有效加载DAC逻辑输入引脚。用于更新DAC寄存器和模拟输出。当永久接为低电平时,输的下降沿才会更新输出。LDAC引脚不能悬空。 SYNC:低电平有效数字接口同步输入引脚。这是输入数据的帧同步信号。当SYNC为低电平时,使能输入移位寄存器,然后数据在后续时钟的下降沿输入移位寄存器。输入移位寄存器在SYNC的上升沿更新。 |
|
|
|
|
|
谢谢您,SYNC =1可以在STM32 下实现(位带操作),我想简单的发送个指令让DAC输出电压,可是输出一直为0,您看下图是数据手册上的寄存器说明,应该只需要图一画圈的这两部分就可以实现输出。图二,三是控制寄存器的操作说明,图四是我写的发送指令( SPI1_Dac_WriteByte((0x03<<16)+0x1111)是要发送的数据)。
|
|
|
|
|
|
|
|
|
|
|
|
这两个引脚都为高电平3.3V
|
|
|
|
|
|
回读一下寄存器看看数据写入成功没
|
|
|
|
|
|
还没操作到这一步,我就是想先看看能不能写数据(还不会写数据,更不用说读了),我不明白的地方是这个写数据的流程,我的流程是:上电后
1.写软件完全复位命令, 2写控制寄存器命令,配置输出范围,内部基准源等 3再次写软件完全复位命令。 4写入和更新DAC寄存器命令(后面跟十六位数据)。 5测试输出引脚电压 不知道这个流程对不对? |
|
|
|
|
|
第3步在配置好后再执行复位会导致配置丢失 把这步去掉
|
|
|
|
|
|
这个器件没有对CPOL和CPHA有严格的规定,算是比较好用的,只需要注意一下数据高地位不要错就行了。
|
|
|
|
|
|
恩恩,谢谢您,可以输出了。还有个问题不明白,想请教下您,这款DA的建立时间是7.5us,SPI接口的最大速度是50MHZ,我用的STM32 SPI接口最大速度是18MZ,每次写需要发送数据24位,我想利用查表法输出正弦波(一个周期有256个点),则这款DA理论上可以输出的最大正弦频率是多大?
我是这样计算的:以STM32 最大18MHZ计算,发送24bit,需要(24/18)us,一个周期内取256个点,则需要(24/18)*256us=340us,=2.9KHZ .则输出最大正弦频率是2.9KHZ,但是DA的建立时间是7.5us,是不是说发送一个数据后,要等7.5us后再发送第二个数据? |
|
|
|
|
|
建立时间是指发出更新DAC指令后到DAC输出稳定的时间和SPI通信无关
比如通过SYNC上升沿更新时,SYNC产生上升沿到DAC完成输出指定电压用的时间 在SYNC发出上升沿后一段时间内虽然DAC输出没有稳定,但是不影响你通过SPI向DAC写下一个数据 实际的稳定时间计算比较复杂,假设在你的应用中是7.5us,那么你的输出代码的速率为1/7.5us=133KHz 你的正弦表一个周期是256个点,最后输出的信号频率应该为133K/256=500Hz |
|
|
|
|
|
如果你的输出范围是+-5V,256点的正弦信号对应的最大step code是804左右,建立时间应该在2~3us左右
|
|
|
|
|
|
太感谢您了,也就是说虽然DAC的SPI速度很快,但是输出正弦波的频率是由上升时间(7.5us)决定的。我本来是想DAC 输出10KHZ的正弦波,经过放大电路后驱动负载,看来这样就不行了,老师,向您请教下,DAC输出正弦波,每个周期取得点越多,输出波形越准确,作为正弦波驱动负载,这个点数应该怎么取呢?(取128个点与取256个点的区别),用DDS芯片输出波形也可以吧?
|
|
|
|
|
|
7.5us是指AD5761从10V跳到0V时的建立时间,实际的建立时间要比7.5us快一些,这和输出信号的摆幅有关,比如你想直接通过AD5761输出0~500mV的正弦信号,AD5761设置的输出范围是0~5V,DAC的输入数据在0~6553之间,256点的正弦信号数据和数据之间最大间隔80LSB,平均50LSB左右(1LSB对应76uv的电压变化,50LSB=3.8mv),这时DAC的建立时间就会更快。
选择正弦波的点数时一方面要考虑DAC的输出分辨率,比如8位的DAC,它只能输入0~256,当点数足够多,多到每步数据间的间隔小于1LSB时点数再多就没有意义了。 分辨率允许的情况下,理论上点数越多,输出波形越平滑,限制信号点数的条件就是DAC的最大输出频率了,频率够快时点数越多越好。 在实际使用中还需要考虑2个因素,一方面是处理器的资源,如果是DAC,每输出一步数据都需要处理器参与,有时受限于处理器的资源,在频率较高时点数不能太多,DDS因为是在芯片内部实实现,就不用考虑处理器的问题。 另一方面是你的实际应用,当256点波形已经能满足你的要求时,再增加点数对你的电路性能影响也不是很大。 |
|
|
|
|
|
谢谢您老师,讲的很详细,非常感谢,我还得继续学习
|
|
|
|
|
|
老师,再向您请教个问题,比如我用DA输出10KHZ的正弦波(DA的输出经过放大电路放大来驱动压电陶瓷负载,压电陶瓷负载等效于一个电容),每个周期取256个点,压电陶瓷负载会在电压的作用下输出位移,这时我用AD模块采集压电陶瓷(带位移传感器)的输出位移,这个时候的AD怎么选择,采样率是怎么计算?
|
|
|
|
|
|
这要看你的位移传感器是什么类型的
|
|
|
|
|
|
这个跟位移传感器有关系吗?DA的驱动频率是10KHZ ,压电陶瓷位移输出的频率也是10KHZ,那么AD采集的频率应该大于2*10KHZ,这样理解对吗?
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 06:29 , Processed in 1.153437 second(s), Total 76, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
850