新手上路
- 积分
- 27
- 金钱
- 27
- 注册时间
- 2021-3-30
- 在线时间
- 6 小时
|
2金钱
板子是 探索者F407ZGT6 使用keil5运行hal库例子touch可以正常运行触摸屏实验,切换到CubeIDE环境运行touch例子也不正常,网上找了SPI 读取的例子,始终没法成功.
问题:每次读取ADC中的 X Y 返回值一直是4095
#define TOUCH_CS_HIGH() HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET)
#define TOUCH_CS_LOW() HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET)
uint8_t WR_Cmd(uint8_t cmd)
{
uint8_t Tx_DATA = cmd;
uint8_t Rx_DATA = 0;
HAL_StatusTypeDef ndef = HAL_SPI_TransmitReceive(&hspi1,&Tx_DATA,&Rx_DATA,1,500);
return Rx_DATA;
}
//读取X轴或y轴的ADC值
uint16_t TP_Read_AD(uint8_t cmd)
{
uint8_t i, j;
uint16_t NUMH,NUML;
uint16_t NUM;
TOUCH_CS_LOW(); /* 打开片选 */
WR_Cmd(cmd);
NUMH = WR_Cmd(0xff);
NUML = WR_Cmd(0xff);
NUM = (NUMH<<8)+ NUML;
NUM >>= 4; //高12位有效
//printf("NUM[%d] = %d\r\n",i,NUM);
//TCS=1;
TOUCH_CS_HIGH(); /*关闭片选 */
return NUM;
}==============================
TP_Read_AD() 返回值一直都是4095
=================================
SPI 配置:
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 10;
|
|