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

stm32f030c8t6为什么我spi配置没反应

[复制链接]
p13692166934 提问时间:2018-10-31 14:12 /
本帖最后由 p13692166934 于 2019-1-16 16:07 编辑

使用spi驱动oled,配置不知道哪里有问题,用模拟时序没问题,但一换寄存器屏直接亮不了,下面为代码

        RCC->AHBENR |=0x01<<17;
        //SCK(PA5) MOSI(PA7)配置为普通功能推挽输出
        //端口模式设置
        //模式----通用输出模式(01)
        GPIOA->MODER &=~(0x03<<10 |0x03<<14);
        GPIOA->MODER |=0X02<<14 | 0X02<<10;
        //输出类型----推挽
        GPIOA->OTYPER &= ~(0X01<<7 | 0X01<<5);        
        //输出速度----100M
        GPIOA->OSPEEDR &=~(0x03<<14 |0x03<<10|0X03<<12);
        //上下拉-----无上拉或下拉
        GPIOA->PUPDR &=~(0x03<<14 |0x03<<10|0X03<<12);
        

        //MISO(pA6) 配置为浮空输入
        GPIOA->MODER &=~(0X03<<12);  //pA6为输入模式
        GPIOA->MODER |=0X02<<12;
        
        GPIOA->AFR[0] &=~(0x0fff<<20);
        
       //SPI1时钟使能
        RCC->APB2ENR |=0X01<<12;
        SPI_InitTypeDef SPI_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_Low;

        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;

        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

        SPI_InitStructure.SPI_CRCPolynomial = 7;

        SPI_Init(SPI1,&SPI_InitStructure);

        SPI_RxFIFOThresholdConfig (SPI1,SPI_RxFIFOThreshold_QF );

        SPI_Cmd(SPI1,ENABLE);


u8 SPI1_ReadWriteByte(u8 _data)
{

       while(SPI_I2S_GetFlagStatus(SPI1 ,SPI_I2S_FLAG_TXE )==RESET  );        SPI_SendData8 (SPI1 ,_data);
        while(SPI_I2S_GetFlagStatus(SPI1 ,SPI_I2S_FLAG_RXNE )==RESET );
        return SPI_ReceiveData8 (SPI1 );
        
        
}

收藏 评论5 发布时间:2018-10-31 14:12

举报

5个回答
a707083746 回答时间:2018-10-31 14:45:09
是不是没有配置这个: 如SPI2
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_0);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_0);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_0);

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

huangyanga 回答时间:2018-10-31 14:47:50
SPI_NSS脚没有拉低
p13692166934 回答时间:2018-10-31 15:08:33

拉低了,这个是spi初始化的,oled的程序我没放出来,之前模拟时序没问题可以亮,换成控制器就不行了,那就说明spi的问题,控制器不清楚哪里配置有问题
p13692166934 回答时间:2018-10-31 15:09:41
a707083746 发表于 2018-10-31 14:45
是不是没有配置这个: 如SPI2
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_0);
  GPIO_PinAFConf ...

配置了,gpio初始化就有了GPIOA->AFR[0] &=~(0x0fff<<20);
p13692166934 回答时间:2018-10-31 15:18:12
结贴,少配置了CR2的FRXTH

所属标签

相似问题

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