你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 5543|回复: 4

关于STM32的SPI问题集锦

[复制链接]

21

主题

30

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2012-5-8 10:46:32 | 显示全部楼层 |阅读模式
1STM32F207 使用SPI2收不到数据的问题


问:我使用STM32F207SPI2控制模数转换器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;
<span style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-spacerun: 'yes'">SPI2->CR1=0
回复

使用道具 举报

1

主题

9

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-5-25 10:23:41 | 显示全部楼层

RE:关于STM32的SPI问题集锦

楼主能给分原理图吗?1822674111@qq.com谢谢
回复 支持 反对

使用道具 举报

0

主题

43

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-12-4 10:45:38 | 显示全部楼层

RE:关于STM32的SPI问题集锦

这个要看看
回复 支持 反对

使用道具 举报

1

主题

11

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-12-19 14:31:15 | 显示全部楼层

RE:关于STM32的SPI问题集锦

你好,我想问一下STM32F10X系列的SPI接口是4线模式吗,那么相当于CS信号(CE)的是NSS吗?具体该如何配置?
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-8-18 22:34:55 | 显示全部楼层

RE:关于STM32的SPI问题集锦

这几天写一个STM32F103VC与AT45DB642D芯片通信的程序,可是总是数据写不到存储芯片内,哪位高手帮我看下是怎么回事?谢谢了!
void SPI_Configuration(void)
{
SPI_InitTypeDef  SPI_InitStructure;
SPI_Cmd(SPI1, DISABLE);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;    //设置SPI工作模式:设置为主SPI
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;  //设置SPI的数据大小:SPI发送接收8位帧结构  
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;  //选择了串行时钟的稳态:时钟 悬空低  
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //数据捕获于第二个时钟沿  
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;  //NSS信号由硬件(NSS管脚)还是 软件(使用SSI位)管理:内部NSS信号有SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;  //定义波特 率预分频的值:波特率预分频值为256
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC值计算的多项式
SPI_Init(SPI1, &SPI_InitStructure);  //根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
SPI_Cmd(SPI1, ENABLE); //使能SPI外设
}
/***Dataflash_write2flash()*****连续写数据到SPI Flash内部**************/
 Dataflash_write2flash(unsigned char* data, unsigned int  page,  unsigned int address,  unsigned int size, FLASH_BUFFER_NUM buffer_num)
        {
         u16 i;
       
         if(SPI_Data_Flash_Busy_Detect()==0)  //==0 Data Flash空闲
            {
                 SPI_Data_Flash_AT_SELECT(); //片选Dataflash 
                 if(buffer_num == FLASH_BUFFER1)
                  SPI_ReadWrite_Byte(AT45DB_BUFFER_1_WRITE_FLASH );
                 else 
                  SPI_ReadWrite_Byte(AT45DB_BUFFER_2_WRITE_FLASH);
                  SPI_ReadWrite_Byte(page>>5);
                  SPI_ReadWrite_Byte((page8));  
                  SPI_ReadWrite_Byte(address);               
                 for (i=0; i
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版