STM32
直播中

郑聪

7年用户 191经验值
私信 关注
[问答]

如何才能使SPI中的SS输出控制自如

请问如何才能使SPI中的SS位在MOSI开始传输时拉低,传输完成后自动拉高。
void SPI2_Init(void)
{  
RCC->APB2ENR|=1<<3;       //PORTB时钟使能   
RCC->APB1ENR|=1<<14;      //SPI2时钟使能
     
//这里只针对SPI口初始化
GPIOB->CRH&=0X0000FFFF;
GPIOB->CRH|=0XBBBB0000;//PB12.13.14.15复用      
GPIOB->ODR|=0X0000F000;//PB12.13.14.15上拉
SPI2->CR1 = //(1<<15)|
    (1<<14)|
    (1<<11)|
    (0x7<<3)|
    (1<<2);
SPI2->CR2 = (1<<2);
SPI2->CR1|=1<<6; //SPI设备使能  
}
经过以上初始化,SCK和MOSI传输都正常,但是SS位,一直为低。
如何配置才能让SPI硬件自动输出高低电平?

回帖(3)

张东群

2019-7-22 08:27:26
使能自动控制片选,应该就可以了.
如果你设置了还是不行,检查下电路吧.
举报

李牧喜

2019-7-22 08:43:15
我是用的开发板上的SPI2,电路应该没问题,软件控制SS位是可以的。
就是有点占用CPU,所以想用硬件自动控制SS位。
百度了下,好像很多人是说STM32的SPI,NSS位不能自动拉高。
我使能了SSOE位,用示波器观察PB12,确实没有输出,一直是低电平。
举报

齐镭

2019-7-22 08:57:55
不是吧?stm32有这个bug? 
你试试用上拉电阻.看能否拉高?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分