芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

IC解密HC32F460单片机XPT2046触摸程序

  1. IC解密#include "xpt2046.h"

  2. void XPT2046_init(void)
  3. {
  4.     stc_port_init_t stcPortInit;
  5.     /* configuration structure initialization */
  6.     MEM_ZERO_STRUCT(stcPortInit);

  7.     stcPortInit.enPinMode = Pin_Mode_Out;
  8.     stcPortInit.enExInt = Enable;
  9.     stcPortInit.enPullUp = Enable;

  10.     PORT_Init(XPT2046_PIN_PORT ,XPT2046_CS_PIN , &stcPortInit);
  11.     stcPortInit.enPinMode = Pin_Mode_In;
  12.     PORT_Init(XPT2046_PIN_PORT ,XPT2046_PEN_PIN , &stcPortInit);
  13.     PORT_Unlock();
  14.     M4_PORT->PSPCR  = 0x0Bu;
  15.     PORT_Lock();

  16.     XPT2046_CS_Set();
  17. }

  18. void send_8way(uint8_t data)
  19. {

  20.     while (Reset == SPI_GetFlag(SPI_UNIT, SpiFlagSpiIdle))
  21.     {}        
  22.     SPI_SendData8(SPI_UNIT,data);   
  23.     while (Reset == SPI_GetFlag(SPI_UNIT,SpiFlagReceiveBufferFull))
  24.     {}   
  25.     SPI_ReceiveData8(SPI_UNIT);   
  26. }

  27. uint8_t receiv_8way(void)
  28. {
  29.     while (Reset == SPI_GetFlag(SPI_UNIT, SpiFlagSpiIdle))
  30.     {}        
  31.     SPI_SendData8(SPI_UNIT,0x00);
  32.     while (Reset == SPI_GetFlag(SPI_UNIT,SpiFlagReceiveBufferFull))
  33.     {}
  34.     return SPI_ReceiveData8(SPI_UNIT);            
  35. }


  36. int cmp(const void *a, const void *b)
  37. {
  38.     return *(uint16_t *)a - *(uint16_t *)b; //从小到大排序(b-a则是从大到小)。需要与被测类型一致,否则排序乱七八糟
  39. }

  40. static const uint8_t count = REPEATED_SAMPLING_TIMES; //采集次数
  41. u16 x_data[count], y_data[count];
  42. void XPT2046_Rd_Addata(uint16_t *rxdata,uint16_t *rydata)
  43. {
  44.     if(PORT_GetBit(XPT2046_PIN_PORT,XPT2046_PEN_PIN)==Reset)//触摸按下了
  45.     {   
  46.     Ddl_Delay1ms(30);
  47.     if(PORT_GetBit(XPT2046_PIN_PORT,XPT2046_PEN_PIN)==Reset)
  48.     {
  49.     XPT2046_CS_Clr();
  50.     SPI_SetClockDiv(SPI_UNIT,SpiClkDiv32);
  51.     Ddl_Delay1us(10);
  52.     for (uint8_t i = 0; i < count; i++)
  53.     {
  54.         send_8way(0xd0); //发送命令
  55.         Ddl_Delay1us(8);
  56.         xdata = receiv_8way();
  57.         xdata <<= 8;
  58.         xdata |= receiv_8way();
  59.         xdata >>= 3;
  60.         x_data[i] = xdata & 0xFFF;

  61.         send_8way(0x90);
  62.         Ddl_Delay1us(8);
  63.         ydata = receiv_8way();
  64.         ydata <<= 8;        
  65.         ydata |= receiv_8way();
  66.         ydata >>= 3;
  67.         y_data[i] = ydata & 0xFFF;
  68.         Ddl_Delay1us(200);



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信