1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32控制AD9837 ,使用SPI发送控制字,SPI的时序和发出的数据都看过,没有问题 。但是AD9837没响应。
STM32的代码如下: void AD9837_SPI_Init( void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI2_InitStruct; //SPI 端口时钟初始化 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //SPI 片选使能初始化 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); /* Confugure SCK and MOSI pins as Input Floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_14; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ; GPIO_Init(GPIOB, &GPIO_InitStructure); //FSYNC 初始化 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8| GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOE, &GPIO_InitStructure); ADI_CS_HIGH_1; ADI_CS_HIGH_2; //SPI2 时钟使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); SPI_I2S_DeInit(SPI2); SPI2_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI2_InitStruct.SPI_Mode = SPI_Mode_Master; //主模式 SPI2_InitStruct.SPI_DataSize = SPI_DataSize_16b; SPI2_InitStruct.SPI_CPOL = SPI_CPOL_High; SPI2_InitStruct.SPI_CPHA = SPI_CPHA_1Edge; SPI2_InitStruct.SPI_NSS = SPI_NSS_Soft ; SPI2_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64; //速录500K,1M也试过 SPI2_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB; SPI2_InitStruct.SPI_CRCPolynomial = 7; //初始化 SPI_Init(SPI2, &SPI2_InitStruct); //使能 SPI_Cmd(SPI2,ENABLE); AD9837_SetRegisterValue(AD9837_REG_CMD | AD9837_RESET); } /***************************************************************************//** * @brief Writes data to SPI. * * @param data - Write data buffer: * - first byte is the chip select number; * - from the second byte onwards are located data bytes to write. * @param bytesNumber - Number of bytes to write. * * @return Number of written bytes. *******************************************************************************/ void SPI_Write(uint16 data) { while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI2, data); } AD9837.h和AD9837.C是使用ADI官网的例程文件。 |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
990 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1384 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1938 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4269 浏览 2 评论
9060 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1522浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1693浏览 2评论
992浏览 2评论
1668浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1387浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 01:13 , Processed in 0.897181 second(s), Total 79, Slave 61 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号