完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、STM32F207 使用SPI2收不到数据的问题
问:我使用STM32F207的SPI2控制模数转换器AD977时, STM32F207处理器的SPI2工作在单向只接收模式(从模式)下,我的SPI2总是接收不到数据(但在SPI2_MOSI管脚上有数据,时钟也有,我用示波器看的),请帮我分析一下。我的SPI及管脚配置如下: void SPI2_Config(void) { //NVIC_InitTypeDef NVIC_InitStructure; /* Enable the SPI clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); /* Enable GPIO clocks */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); /* Connect SPI pins to AF5 */ //GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2); //GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2); //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; /* SPI SCK pin configuration */ //GPIO_InitStructure.GPIO_Pin =GPIO_Pin_13; //GPIO_Init(GPIOB, &GPIO_InitStructure); /* SPI MOSI pin configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15; //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(GPIOB, &GPIO_InitStructure); /* SPI configuration -------------------------------------------------------*/ SPI_I2S_DeInit(SPI2); SPI_Cmd(SPI2, DISABLE); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode=SPI_Mode_Slave; SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI2->CR1=0<<8; SPI_Init(SPI2, &SPI_InitStructure); //SPI_TIModeCmd(SPI2, ENABLE); SPI_Cmd(SPI2,ENABLE); } 答:GPIO的模式改为GPIO_Mode_AF_PP 2、关于STM32的SPI 问:SPI口,同步串行通信中的“同步”指的是什么? 答:同步,是指在通信过程中,被控制的对象与主机的时钟是相同的,都是由主机发出。 3、STM32F10X SPI时序 疑惑 问:这两天学习了STM32F10X系列的SPI模块,发现其时序问题,感到非常疑惑:通过CPOL和CPHA两个位来控制收、发时序;根据时序图可以看出:发送、接收是在同一个时钟边沿采样!可是我接触过的所有使用SPI通信的外围芯片,发送和接受都是在不同的时钟边沿采样,这样的话,发送、接收肯定有一方采集到的数据存在错误的可能。目前正在调试开发板的SPI模块,和AT45DB161B通信,目前还没有成功,请高手指点! 答:SPI通讯的方式有3种、4线、3线、2线型。你使用的是那种情况? 答:4线全双工 答:你说的情况是不会发生的,这个你可以参考SPI4线的通讯方式。通讯不了,首先排除硬件问题,再次排除程序通讯问题。 4、使用SPI外设时如何设定NSS为通用IO口? 答:主模式和从模式下均可以由软件或硬件进行NSS管理; 将SPI_CR1寄存器的SSM位置为1时,NSS引脚将被释放出来用作GPIO口;使用STM32软件库时,初始化SPI外设时,使用如下代码: SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; 如果NSS引脚用于其他外设时,需要使能NSS输出: SPI_SSOutputCmd(SPIx, ENABLE); |
|
相关推荐 |
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
218 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
204 浏览 0 评论
231 浏览 0 评论
449 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
628 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11636 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 01:28 , Processed in 0.546302 second(s), Total 51, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号