亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ads7843.c

?? tft and touch program for at91sam9263ek,編程環(huán)境為keil
?? C
字號:
/* ----------------------------------------------------------------------------
 *         ATMEL Microcontroller Software Support 
 * ----------------------------------------------------------------------------
 * Copyright (c) 2008, Atmel Corporation
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaimer below.
 *
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

//------------------------------------------------------------------------------
//         Headers
//------------------------------------------------------------------------------
#include <board.h>

#ifdef BOARD_TSC_ADS7843

#include <pio/pio.h>
#include <spi/spi.h>

#include "ads7843.h"

//------------------------------------------------------------------------------
//         Defines
//------------------------------------------------------------------------------

#define ADS_CTRL_PD0              (1 << 0)        // PD0
#define ADS_CTRL_PD1              (1 << 1)        // PD1
#define ADS_CTRL_DFR              (1 << 2)        // SER/DFR
#define ADS_CTRL_EIGHT_BITS_MOD   (1 << 3)        // Mode
#define ADS_CTRL_START            (1 << 7)        // Start Bit
#define ADS_CTRL_SWITCH_SHIFT     4               // Address setting

// Get X position command
#define CMD_X_POSITION ((1 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START | ADS_CTRL_PD0 | ADS_CTRL_PD1)
// Get Y position command
#define CMD_Y_POSITION ((5 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START | ADS_CTRL_PD0 | ADS_CTRL_PD1)
// Enable penIRQ
#define CMD_ENABLE_PENIRQ  ((1 << ADS_CTRL_SWITCH_SHIFT) | ADS_CTRL_START)


#define AT91C_TOUCHSCREEN_TIMEOUT        5000000

#define DELAY_BEFORE_SPCK          (200 << 16) // 2us min (tCSS) <=> 200/100 000 000 = 2us
#define DELAY_BETWEEN_CONS_COM     (0xf << 24) // 5us min (tCSH) <=> (32 * 15) / (100 000 000) = 5us
  
//------------------------------------------------------------------------------
//         Local variables
//------------------------------------------------------------------------------

/// Pins used by SPI
static const Pin pinsSPI[]  = {BOARD_TSC_SPI_PINS, BOARD_TSC_NPCS_PIN};

//------------------------------------------------------------------------------
//         Local functions
//------------------------------------------------------------------------------

//-----------------------------------------------------------------------------
/// Generic function to send a command to the touchscreen controller
/// /param command to send
/// /return command result
//-----------------------------------------------------------------------------
static unsigned int SendCommand(unsigned char bCmd)
{
    unsigned int  uResult = 0;
    unsigned int  uTimeout = 0;
    // (volatile declaration needed for code optimisation by compiler)
    volatile unsigned char bufferRX[3]; 
    volatile unsigned char bufferTX[3];
    
    AT91PS_PDC pPdc = (AT91PS_PDC) &(AT91C_BASE_SPI0->SPI_RPR);
    unsigned int dStatus;  
  
    bufferRX[0] = 0;
    bufferRX[1] = 0;
    bufferRX[2] = 0;
    
    bufferTX[0] = bCmd;
    bufferTX[1] = 0;
    bufferTX[2] = 0;//bCmd;
    
    // Send Command and data through the SPI
    pPdc->PDC_PTCR = AT91C_PDC_RXTDIS;
    pPdc->PDC_RPR = (unsigned int) bufferRX;
    pPdc->PDC_RCR = 3;    
    
    pPdc->PDC_PTCR = AT91C_PDC_TXTDIS;
    pPdc->PDC_TPR = (unsigned int) bufferTX;
    pPdc->PDC_TCR = 3;
    
    pPdc->PDC_PTCR = AT91C_PDC_RXTEN;
    pPdc->PDC_PTCR = AT91C_PDC_TXTEN;

    do {
        dStatus = AT91C_BASE_SPI0->SPI_SR;
        uTimeout++;
    }
    while ((( dStatus & AT91C_SPI_RXBUFF) != AT91C_SPI_RXBUFF) && (uTimeout < AT91C_TOUCHSCREEN_TIMEOUT));

    pPdc->PDC_PTCR = AT91C_PDC_RXTDIS;   
    pPdc->PDC_PTCR = AT91C_PDC_TXTDIS;    
    
    uResult = ((unsigned int)bufferRX[1] << 8) | (unsigned int)bufferRX[2];
    uResult = uResult >> 4; 
    
    return uResult;
}

//------------------------------------------------------------------------------
//         Global functions
//------------------------------------------------------------------------------

//-----------------------------------------------------------------------------
/// Get position of the pen by ask the ADS controller (SPI)
/// /param pointer to the horizontal position
/// /param pointer to the vertical position
//-----------------------------------------------------------------------------
void ADS7843_GetPosition(unsigned int* px_pos, unsigned int* py_pos)
{
    // Get X position
    *px_pos = SendCommand(CMD_X_POSITION);
    // Get Y position
    *py_pos = SendCommand(CMD_Y_POSITION);
    // Switch to full power mode
    SendCommand(CMD_ENABLE_PENIRQ);
}


//-----------------------------------------------------------------------------
/// Initialization of the SPI for communication with ADS7843 component
//-----------------------------------------------------------------------------
void ADS7843_Initialize(void)
{
    volatile unsigned int uDummy;
      
    // Configure pins
    PIO_Configure(pinsSPI, PIO_LISTSIZE(pinsSPI));

    SPI_Configure(AT91C_BASE_SPI0, 
                  AT91C_ID_SPI0,
                  AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | SPI_PCS(BOARD_TSC_NPCS) // Value of the SPI configuration register.
    );    
    
    SPI_ConfigureNPCS(AT91C_BASE_SPI0, BOARD_TSC_NPCS, 
                      AT91C_SPI_NCPHA | (AT91C_SPI_DLYBS & DELAY_BEFORE_SPCK) |
                      (AT91C_SPI_DLYBCT & DELAY_BETWEEN_CONS_COM) | (0xC8 << 8) );
    
    SPI_Enable(AT91C_BASE_SPI0);

    for (uDummy=0; uDummy<100000; uDummy++);

    uDummy = AT91C_BASE_SPI0->SPI_SR;    
    uDummy = AT91C_BASE_SPI0->SPI_RDR;  
    
    SendCommand(CMD_ENABLE_PENIRQ);    
}

//-----------------------------------------------------------------------------
/// Reset the ADS7843
//-----------------------------------------------------------------------------
void ADS7843_Reset(void)
{
    // Disable SPI 0
    SPI_Disable(AT91C_BASE_SPI0);
}

#endif //#ifdef BOARD_TSC_ADS7843

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美无人高清视频在线观看| 日韩天堂在线观看| 日韩成人精品在线| 国产日韩欧美激情| 91精品久久久久久蜜臀| 成人免费高清视频| 另类欧美日韩国产在线| 亚洲欧美一区二区三区孕妇| 精品久久久三级丝袜| 在线观看亚洲专区| 成人永久aaa| 久久国产三级精品| 亚洲成a人片在线不卡一二三区| 国产日韩欧美综合一区| 日韩免费看网站| 欧美视频精品在线观看| 99精品欧美一区二区三区小说 | 欧美日韩国产综合久久| jlzzjlzz国产精品久久| 国产综合色视频| 日韩成人dvd| 午夜日韩在线电影| 亚洲综合色噜噜狠狠| 亚洲图片另类小说| 中文字幕一区二区三| 国产情人综合久久777777| 精品美女被调教视频大全网站| 69p69国产精品| 欧美群妇大交群中文字幕| 欧美视频三区在线播放| 在线观看日韩电影| 91黄色在线观看| 在线免费观看成人短视频| 色综合久久精品| 色婷婷香蕉在线一区二区| 91蜜桃婷婷狠狠久久综合9色| 成人高清视频免费观看| 成人国产精品免费观看| 99re热这里只有精品视频| 成人动漫一区二区在线| 97se亚洲国产综合自在线 | 欧美日韩精品福利| 91激情五月电影| 欧美日韩一级片在线观看| 欧美亚洲国产bt| 在线精品视频免费播放| 欧美日韩成人综合| 日韩一区二区三| 精品国免费一区二区三区| 26uuu亚洲| 国产精品伦一区二区三级视频| 国产精品传媒视频| 亚洲精品国产精品乱码不99| 亚洲午夜久久久| 日韩黄色在线观看| 麻豆成人久久精品二区三区红| 黑人精品欧美一区二区蜜桃 | 欧美另类高清zo欧美| 在线播放中文字幕一区| 欧美成人aa大片| 欧美国产精品久久| 亚洲欧美精品午睡沙发| 午夜国产精品影院在线观看| 久久精品国产99国产| 成人午夜精品一区二区三区| 91美女在线观看| 欧美日本一区二区三区四区| 欧美videossexotv100| 国产精品视频九色porn| 亚洲影院理伦片| 精品一区二区三区视频| 99久久99久久综合| 制服丝袜亚洲播放| 欧美经典一区二区| 亚洲成人1区2区| 国产成人av网站| 欧美日本一区二区三区四区| 久久久精品人体av艺术| 亚洲午夜久久久久久久久电影网| 国模娜娜一区二区三区| 91久久一区二区| 精品欧美一区二区三区精品久久| 国产精品理论片| 日精品一区二区| 不卡的看片网站| 欧美一级一区二区| 亚洲日本在线看| 国内外精品视频| 色呦呦国产精品| 欧美精品一区二区三区蜜桃| 亚洲素人一区二区| 狠狠色综合播放一区二区| 欧美性xxxxxxxx| 国产精品网站一区| 久久er99精品| 欧美三日本三级三级在线播放| 国产欧美日韩卡一| 美女诱惑一区二区| 欧美三区免费完整视频在线观看| 久久久久久久久久久久电影 | 大陆成人av片| 日韩免费看的电影| 丝袜脚交一区二区| 91同城在线观看| 国产视频一区二区在线| 全部av―极品视觉盛宴亚洲| 91久久精品一区二区| 中文字幕一区免费在线观看| 久久se精品一区二区| 51精品秘密在线观看| 玉米视频成人免费看| 91一区一区三区| 亚洲国产成人在线| 国产精品亚洲第一区在线暖暖韩国| 欧美高清视频不卡网| 亚洲一区视频在线| 99精品偷自拍| 国产精品久久久一本精品| 国产一区二区三区国产| 欧美va亚洲va| 美日韩一区二区三区| 欧美一区二区三区免费在线看 | 国产精品欧美久久久久一区二区| 久久国产免费看| 欧美一级二级在线观看| 午夜av区久久| 欧美精品视频www在线观看 | 精品国产精品网麻豆系列| 午夜欧美电影在线观看| 欧美日韩精品三区| 亚洲一区二区三区四区在线观看 | 91精品国产欧美一区二区18| 亚洲自拍都市欧美小说| 91精彩视频在线观看| 亚洲小说欧美激情另类| 欧美色成人综合| 肉色丝袜一区二区| 91精品国产一区二区三区| 美女任你摸久久| 精品国产一二三| 国产原创一区二区三区| 久久久久久久久久久电影| 国产麻豆精品theporn| 久久久久久久免费视频了| 高清视频一区二区| 国产精品九色蝌蚪自拍| 91精品1区2区| 亚洲国产日日夜夜| 日韩亚洲欧美在线| 极品少妇xxxx精品少妇偷拍| 久久伊人中文字幕| 99国产精品久久久| 亚洲一本大道在线| 日韩亚洲欧美中文三级| 国产成人精品三级| 国产精品久久福利| 欧美日韩视频第一区| 青青草国产成人99久久| 亚洲精品在线观| 91亚洲永久精品| 爽好多水快深点欧美视频| 精品国产精品网麻豆系列| www.亚洲精品| 亚洲成人激情自拍| 久久婷婷久久一区二区三区| va亚洲va日韩不卡在线观看| 亚洲国产cao| 亚洲精品一区二区三区99| 成人激情校园春色| 亚洲bt欧美bt精品777| 26uuu欧美| 91黄色激情网站| 国内精品伊人久久久久av一坑| 国产精品嫩草影院com| 欧美日韩国产成人在线免费| 国产尤物一区二区| 一区二区三区在线视频观看58| 欧美一区二区高清| 成人性生交大片免费看中文网站| 亚洲国产婷婷综合在线精品| 久久久国产精华| 欧美亚洲一区二区三区四区| 国内精品在线播放| 亚洲自拍偷拍麻豆| 国产欧美日韩不卡| 7777精品伊人久久久大香线蕉的 | 欧美日韩精品欧美日韩精品| 韩国理伦片一区二区三区在线播放| 亚洲欧洲中文日韩久久av乱码| 欧美mv日韩mv| 在线视频中文字幕一区二区| 国产精品99久久久久久有的能看| 亚洲国产欧美另类丝袜| 日本一区二区三区四区| 日韩欧美国产成人一区二区| 欧美午夜精品一区| 成人精品gif动图一区| 精品在线观看免费| 亚洲一卡二卡三卡四卡五卡| 国产精品伦理一区二区|