STM32与AD5761通信

2019-03-23 15:28发布

本帖最后由 萤火 于 2017-11-17 11:25 编辑

请问各位老师,我用STM32与外扩的DA转换器通信(AD5761R),SPI方式通信,下面是时序图,程序该怎么写(右图是我写的)?应该选择SPI的哪种模式?
A.png AA.png
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
littleshrimp
1楼-- · 2019-03-24 01:25
/ 你自己写的程序遇到什么问题了?
萤火
2楼-- · 2019-03-24 06:19
 精彩回答 2  元偷偷看……
littleshrimp
3楼-- · 2019-03-24 09:48
整体上是对的,
首先确定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的上升沿更新。
萤火
4楼-- · 2019-03-24 12:07
littleshrimp 发表于 2017-11-18 13:24
整体上是对的,
首先确定SYNC = 1这样的操作在STM32是否能够控制对应的I/O输出高电平,因为只有51才会这样 ...

谢谢您,SYNC =1可以在STM32 下实现(位带操作),我想简单的发送个指令让DAC输出电压,可是输出一直为0,您看下图是数据手册上的寄存器说明,应该只需要图一画圈的这两部分就可以实现输出。图二,三是控制寄存器的操作说明,图四是我写的发送指令( SPI1_Dac_WriteByte((0x03<<16)+0x1111)是要发送的数据)。
1.png 2.png 3.png 4png.png
littleshrimp
5楼-- · 2019-03-24 12:18
 精彩回答 2  元偷偷看……
萤火
6楼-- · 2019-03-24 16:45
littleshrimp 发表于 2017-11-18 15:07
检查一下CLEAR和RESET引脚
参考官方代码看下
https://github.com/analogdevicesinc/no-OS/tree/master/ ...

这两个引脚都为高电平3.3V

一周热门 更多>