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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版