完善资料让更多小伙伴认识你,还能领取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个回答
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
寻求ADF5355类似的微波源,在DC-15GHz内,锁频时间在1ms内
1787 浏览 0 评论
1627 浏览 0 评论
999 浏览 0 评论
1098 浏览 0 评论
ADF5355失锁: 在用ADF5355进行多次扫频时,延时给了500ms还是经常会失锁
1189 浏览 0 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
2843浏览 3评论
2086浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
2119浏览 2评论
1173浏览 2评论
使用ADI官方提供的no-OS來接收GPS L1(1575.42MHz)的資料
1405浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:00 , Processed in 2.101799 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2726