stm32mini板 spi2 xpt2046 触摸屏驱动的问题,DOUT无输出

2019-10-15 01:02发布

xpt2046和stm32的spi2接线一一对应,NSS接CS,配置成普通IO口;这段是SPI2的配置
void SPI2_Init(void){
       
RCC->APB2ENR|=1<<3;//PORTB时钟使能
RCC->APB1ENR|=1<<14;//SPI2时钟使能
               
GPIOB->CRH&=0X0000FFFF;
GPIOB->CRH|=0XB8B30000;//PB13,15复用推挽输出,14输入,12输出
GPIOB->ODR|=0<<14;
GPIOB->ODR|=1<<12;
       
       
SPI2->CR1|=0<<10;//全双工模式
SPI2->CR1|=1<<9; //软件nss管理
SPI2->CR1|=1<<8;
       
SPI2->CR1|=1<<2;//SPI主机
SPI2->CR1|=0<<11;//8bit
SPI2->CR1|=0<<1;//空闲时低电平
SPI2->CR1|=0<<0;//从第一个时间边沿开始
SPI2->CR1|=7<<3; //Fsck=Fcpu/256
SPI2->CR1|=0<<7; //MSBfirst
SPI2->CR1|=1<<6;//SPI设备使能

SPI2_ReadWriteByte(0xff);
}
下面是测试通信的代码
#define XPTCS PBout(12)
u16 value1;
        u8 value2;
        Stm32_Clock_Init(9);        //系统时钟设置
        uart_init(72,9600);                 //串口初始化为9600
        delay_init(72);                            //延时初始化
        SPI2_Init();
        while(1){
        XPTCS = 0;
        delay_us(2);
        SPI2_ReadWriteByte(RD);
        delay_us(6);
        value1=SPI2_ReadWriteByte(0x7f);
        value2=SPI2_ReadWriteByte(0x7f);
        value1=value1<<4;
        value2=value2>>4;
        value1|=value2;
        printf("%x",value1);
        XPTCS=1;}

其中SPI2_ReadWriteByte()函数修改于spi例程中的SPI1_ReadWriteByte()
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。