野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10220|回复: 8

STM32F103ZET6的SPI3问题

[复制链接]
发表于 2016-11-17 10:47:21 | 显示全部楼层 |阅读模式
主芯片是stm32f103zet6
在做spi通信的时候,用KEIL MDK来做单步调试,执行SPI_I2S_SendData(SPI3, 0x88); 函数后,SPIx->DR的值始终为ff,不知道问题出在哪?
回复

使用道具 举报

发表于 2016-11-17 11:03:05 | 显示全部楼层
是不是没有初始化时钟
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-17 11:18:47 | 显示全部楼层
spi3的时钟初始化了,我用示波器看了,sck有波形的。从机是FPGA
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-17 11:19:26 | 显示全部楼层
flyleaf 发表于 2016-11-17 11:03
是不是没有初始化时钟

spi3的时钟初始化了,我用示波器看了,sck有波形的。从机是FPGA,这种情况的原因都有那几方面呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-17 11:21:50 | 显示全部楼层
flyleaf 发表于 2016-11-17 11:03
是不是没有初始化时钟

void SPI3_Init()
{

   GPIO_InitTypeDef GPIO_InitStructure;
   SPI_InitTypeDef  SPI_InitStructure;
//         NVIC_InitTypeDef NVIC_InitStructure;
  
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
        RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOB, ENABLE );
RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOA, ENABLE );
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
          
/**************************
******AFIO****************
**************************/

//GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
//  AFIO->MAPR =(AFIO->MAPR|0x02000000)&0xFAFFFFFF;
   


/**************************
******SPI3_NSS*************
**************************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
SPI_CS_DISABLE();
/**************************
******SPI3_CLK*************
**************************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/**************************
******SPI3_DIN*************
**************************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/**************************
******SPI3_DOUT************
***************************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//SPI_CS_DISABLE();
/*
  NVIC_InitStructure.NVIC_IRQChannel = SPI3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0 ;//ÇàÕ¼óÅÏ輶0
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;                //×óóÅÏ輶1
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1Äü
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷
*/
SPI_Cmd(SPI3, DISABLE);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
   SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
   SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
   SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
   SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
   SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
   SPI_InitStructure.SPI_CRCPolynomial = 7;
   SPI_Init(SPI3, &SPI_InitStructure);
/***********************
******ENABLE SPII3******
***********************/
SPI_Cmd(SPI3, ENABLE);

}
回复 支持 反对

使用道具 举报

发表于 2016-11-17 14:17:58 | 显示全部楼层

看不出问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-17 19:14:44 | 显示全部楼层

我分五次读回来的所有字节,发现整体右移了一位,这个是什么原因造成的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-17 20:36:23 | 显示全部楼层
解决了。谢谢
回复 支持 反对

使用道具 举报

发表于 2017-5-11 17:53:38 | 显示全部楼层
怎么解决的啊?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-22 16:56 , Processed in 0.031707 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表