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

【STM32F3探索套件开发】STM32F3关于SPI求助

[复制链接]
Lin_811 提问时间:2013-4-12 10:16 /
 F3的SPI:
                RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE);               
                RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;               
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;               
                GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;               
                GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_UP;               
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;               
                GPIO_Init(GPIOA, &GPIO_InitStructure);
                SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; 
                SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                        
                SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                
                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_256; /
                SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                               
                SPI_InitStructure.SPI_CRCPolynomial = 7;                                       
                SPI_Init(SPI1, &SPI_InitStructure);
                /* Enable SPI1  */
                SPI_Cmd(SPI1, ENABLE);                        


请问这样是否已经选择了SPI时钟,和选择了PA口使能了SPI
收藏 2 评论3 发布时间:2013-4-12 10:16

举报

3个回答
fengye5340 回答时间:2013-4-12 16:25:00

RE:【STM32F3探索套件开发】STM32F3关于SPI求助

给你发一个我用SPI驱动SD卡的设置吧。这个很稳定了。
#define SD_SPI                           SPI2
#define SD_SPI_CLK                       RCC_APB1Periph_SPI2
#define SD_SPI_SCK_PIN                   GPIO_Pin_13                 /* PB.13 */
#define SD_SPI_SCK_GPIO_PORT             GPIOB                       /* GPIOB */
#define SD_SPI_SCK_GPIO_CLK              RCC_AHBPeriph_GPIOB
#define SD_SPI_SCK_SOURCE                GPIO_PinSource13
#define SD_SPI_SCK_AF                    GPIO_AF_5
#define SD_SPI_MISO_PIN                  GPIO_Pin_14                 /* PB.14 */
#define SD_SPI_MISO_GPIO_PORT            GPIOB                       /* GPIOB */
#define SD_SPI_MISO_GPIO_CLK             RCC_AHBPeriph_GPIOB
#define SD_SPI_MISO_SOURCE               GPIO_PinSource14
#define SD_SPI_MISO_AF                   GPIO_AF_5
#define SD_SPI_MOSI_PIN                  GPIO_Pin_15                 /* PB.15 */
#define SD_SPI_MOSI_GPIO_PORT            GPIOB                       /* GPIOB */
#define SD_SPI_MOSI_GPIO_CLK             RCC_AHBPeriph_GPIOB
#define SD_SPI_MOSI_SOURCE               GPIO_PinSource15
#define SD_SPI_MOSI_AF                   GPIO_AF_5
#define SD_CS_PIN                        GPIO_Pin_1                  /* PC.01 */
#define SD_CS_GPIO_PORT                  GPIOC                       /* GPIOC */
#define SD_CS_GPIO_CLK                   RCC_AHBPeriph_GPIOC
#define SD_CS_L      GPIO_ResetBits(SD_CS_GPIO_PORT, SD_CS_PIN)       
#define SD_CS_H      GPIO_SetBits(SD_CS_GPIO_PORT, SD_CS_PIN)

void SD_SPI2_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef   SPI_InitStructure;
  /*初始化SD卡使用的IO端口的时钟*/
  RCC_AHBPeriphClockCmd(SD_CS_GPIO_CLK | SD_SPI_MOSI_GPIO_CLK | SD_SPI_MISO_GPIO_CLK |
                        SD_SPI_SCK_GPIO_CLK , ENABLE);
  /* SD_SPI 外设时钟使能 */
  RCC_APB1PeriphClockCmd(SD_SPI_CLK, ENABLE);
  /* 配置SD_SPI 管脚: SCK */
  GPIO_InitStructure.GPIO_Pin   = SD_SPI_SCK_PIN;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_Init(SD_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);
  /* 配置 SD_SPI 管脚: MISO */
  GPIO_InitStructure.GPIO_Pin = SD_SPI_MISO_PIN;
  GPIO_Init(SD_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);
  /* 配置 SD_SPI 管脚: MOSI */
  GPIO_InitStructure.GPIO_Pin = SD_SPI_MOSI_PIN;
  GPIO_Init(SD_SPI_MOSI_GPIO_PORT, &GPIO_InitStructure);
  /* 配置 SD_SPI_CS_PIN 管脚: SD Card CS pin */
  GPIO_InitStructure.GPIO_Pin   = SD_CS_PIN;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(SD_CS_GPIO_PORT, &GPIO_InitStructure);
  /* 配置SPI复用 */
  GPIO_PinAFConfig(SD_SPI_SCK_GPIO_PORT,  SD_SPI_SCK_SOURCE, SD_SPI_SCK_AF);
  GPIO_PinAFConfig(SD_SPI_MISO_GPIO_PORT, SD_SPI_MISO_SOURCE, SD_SPI_MISO_AF);
  GPIO_PinAFConfig(SD_SPI_MOSI_GPIO_PORT, SD_SPI_MOSI_SOURCE, SD_SPI_MOSI_AF);  
  
  /* SD_SPI配置参数 */
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//双线双向全双工
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//设置为主SPI
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; // SPI发送接收8位帧结构
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;  // 时钟悬空高
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; // 数据捕获于第二个时钟沿
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;   //  内部NSS信号有SSI位控制
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; //波特率预分频值为256
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //数据传输从MSB位开始
  SPI_InitStructure.SPI_CRCPolynomial = 7; // CRC值计算的多项目
  SPI_Init(SD_SPI, &SPI_InitStructure);
  
  SPI_RxFIFOThresholdConfig(SD_SPI, SPI_RxFIFOThreshold_QF);
  
  SPI_Cmd(SD_SPI, ENABLE); /* SD_SPI enable */
}
Lin_811 回答时间:2013-4-25 11:23:07

回复:【STM32F3探索套件开发】STM32F3关于SPI求助

谢谢。。 
alisa123 回答时间:2015-9-30 17:57:50
fengye5340 发表于 2013-4-12 16:25
给你发一个我用SPI驱动SD卡的设置吧。这个很稳定了。
#define SD_SPI                           SPI2
#def ...

你好,这个是你在stm32f3上实验的例程吗?能够正常的驱动SD卡吗?谢谢你的分享。

所属标签

相似问题

官网相关资源

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