本文目录一览:

  • 1、stm32与AD7190通信,程序不能读到值
  • 2、XPT2046能用STM32硬件SPI直接驱动不? 如果能,波特率预分频值应设为多少? 大侠请帮忙
  • 3、STM32单片机SPI问题
  • 4、stm32cubemx的硬件spi无法拉高软件片选
  • 5、请教STM32系列SPI接口的应用问题?
  • 6、用STM32的SPI接口驱动2.2寸的TFT,怎么提高刷屏速度

stm32与AD7190通信,程序不能读到值

这个问题需要有实物调试,

原因可能有很多,硬件,软件方面。

思路是:

先排除硬件问题,用这个SPI通道测试一下其他通讯

再仔细对照一下AD7190的规格书,看看初始化,设置是否正确,

然后再检查一下发送接收的过程和步骤是否正确。

整理一下代码:

void SPI_Init(void)

{

 RCC-APB2ENR|=13; //PB的时钟使能

 RCC-APB1ENR|=114; //SPI2时钟使能

 GPIOB-CRH=0X000F0FFF; //PB11 PB13 PB15复用推挽 PB14浮空输入

 GPIOB-CRH|=0XB4B0B000;

 GPIOB-ODR|=111; //上拉

 GPIOB-ODR|=113;

 GPIOB-ODR|=115;

 SPI2-CR1|=010;  //全双工

 SPI2-CR1|=19;   //软件SSM,NSS引脚的电平由SSI位的值决定

 SPI2-CR1|=18;   //SSI位

 SPI2-CR1|=12;   //配置为主设备

 SPI2-CR1|=011;  //使用8位数据格式

 SPI2-CR1|=11;   //空闲状态sck=1保持高电平

 SPI2-CR1|=10;   //数据采样从第二个时钟边沿开始

 SPI2-CR1|=33;    //fsck=36M/16 波特率控制

 SPI2-CR1|=07; //先发送MSB 

 SPI2-CR1|=16; //使能spi设备

}

void SPI2_Send_ReveiceFull(u8 *data,u8 len)

{

CS=0;

for(i=0;ilen;i++)

{

while((SPI2-SR(11))==0); //检查spi标志位设置与否,发送缓存空标志位TXE=1为空跳出

SPI2-DR=*(data+i);

while((SPI2-SR(10))==0); //检查指定spi标志位设置与否,接受缓存非空标志位RXNE为非空跳出

temp=SPI2-DR;

*(AD7190_ReveiceData+len-i-1)=temp;

}

CS=1;

}

void AD7190_Init(void)

{

//复位

AD7190_SendaData[2]=0xff;

AD7190_SendaData[1]=0xff;

AD7190_SendaData[0]=0xff;

SPI2_Send_ReveiceFull(AD7190_SendaData,3);

SPI2_Send_ReveiceFull(AD7190_SendaData,3);

SPI2_Send_ReveiceFull(AD7190_SendaData,3);

//设置配置寄存器

AD7190_SendaData[0]=0x10;

SPI2_Send_ReveiceFull(AD7190_SendaData,1);

AD7190_SendaData[2]=0x10;   //基准电压选择需确定

AD7190_SendaData[1]=0x03; //通道选择需配置

AD7190_SendaData[0]=0x07; //输入范围 

SPI2_Send_ReveiceFull(AD7190_SendaData,3);

//设置模式寄存器

AD7190_SendaData[0]=0x08;

SPI2_Send_ReveiceFull(AD7190_SendaData,1);

AD7190_SendaData[2]=0x10; //使用外部时钟

AD7190_SendaData[1]=0x03;

AD7190_SendaData[0]=0xff;

SPI2_Send_ReveiceFull(AD7190_SendaData,3);

//读模式

for(i=0;i4;i++)AD7190_SendaData[i]=0x00;

AD7190_SendaData[0]=0x48;

SPI2_Send_ReveiceFull(AD7190_SendaData,1);

AD7190_SendaData[0]=0x00;

SPI2_Send_ReveiceFull(AD7190_SendaData,3);

//读配置寄存器

AD7190_SendaData[0]=0x50;

SPI2_Send_ReveiceFull(AD7190_SendaData,1);

SPI2_Send_ReveiceFull(AD7190_SendaData,3);

//读数据寄存器

AD7190_SendaData[0]=0x5C; //5C

SPI2_Send_ReveiceFull(AD7190_SendaData,1);

AD7190_SendaData[0]=0xff;

}

XPT2046能用STM32硬件SPI直接驱动不? 如果能,波特率预分频值应设为多少? 大侠请帮忙

可以用硬件SPI方式的,至于波特率,正常72M主频下,设为16分频就可以

STM32单片机SPI问题

● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

● SCK:串口时钟,作为主设备的输出,从设备的输入

●NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。

stm32cubemx的硬件spi无法拉高软件片选

系统bug。stm32cubemx是一种初始化代码生成器工具,用户在使用时硬件spi无法拉高软件片选是系统bug成的,只需要关闭重新打开即可解决。

请教STM32系列SPI接口的应用问题?

SPI一主多从的片选信号引脚其实都不用STM32自带的硬件控制。配置的时候不用开NSS,另外随便选2个引脚(NSS脚也可选)配置下作为CS1和CS2。编程的时候时序上注意下,2个片选不能同时有效。

用STM32的SPI接口驱动2.2寸的TFT,怎么提高刷屏速度

SPI速率提高,如果已经提到最高,那就没办法了。

除非你是买带方案的液晶了。图片直接存到液晶的那种,直接一个指令刷屏。

你可以百度搜搜锐显科技,他们有这种屏。