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()
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>