当前位置:首页 > 技术学院 > 技术前线
[导读]今天调试了ad7606 基于stm32F429的spi模式,发现stm32,clk没有信号输出,认为是初始化配置没有做好,检查了GPIO的初始化,spi的初始化,开始没有发现什么异常,后来发现例程的个GPIO配置应该为PULLUP模式如下图

/* 硬件SPI */

GPIO_InitTypeDef GPIO_InitStructure;

/* 开启GPIO时钟 */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

/* 开启SPI时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

/* 配置 SCK, MISO 、 MOSI 为复用功能 */

//GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI3);

//GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI3);

//GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI3);

/* 配置 SCK, MISO 、 MOSI 为复用功能 */

GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI1);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* 打开SPI时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

改为

/* 硬件SPI */

GPIO_InitTypeDef GPIO_InitStructure;

/* 开启GPIO时钟 */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

/* 开启SPI时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

/* 配置 SCK, MISO 、 MOSI 为复用功能 */

//GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI3);

//GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI3);

//GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI3);

/* 配置 SCK, MISO 、 MOSI 为复用功能 */

GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_SPI1);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

//注意改这里

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;

GPIO_Init(GPIOB, &GPIO_InitStructure);

/* 打开SPI时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

我用的是安富莱的ad7607模块发现没有外部基准,而且比较贵,120大洋一个,太贵了,黑金的199大洋,准备做一批模块,价位在100以内。现在把安富莱的资料跟大家分享下,不过stm32f407的硬spi例程有上面的问题,卡了半天。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭