国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ESP32開發(fā)---驅(qū)動觸摸屏

這篇具有很好參考價值的文章主要介紹了ESP32開發(fā)---驅(qū)動觸摸屏。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

采用I2C驅(qū)動觸摸屏。

I2C多用于主控制器和從器件間的主從通信,在小數(shù)據(jù)量場合使用,傳輸距離短,任意時刻只能有一個主機等特性。

它有兩條線,一條是SCL(串行時鐘總線),另外一條是SDA(串行數(shù)據(jù)線),這兩條數(shù)據(jù)需要接上拉電阻,總線空閑的時候SCL和SDA處于高電平。

ESP32開發(fā)---驅(qū)動觸摸屏

?圖來自正點原子linux驅(qū)動開發(fā)教程

I2C主要有起始位、停止位、數(shù)據(jù)傳輸、應(yīng)答信號等。

I2C寫時序

I2C的寫時序相較于讀時序是比較簡單的,大概分以下幾個步驟。

  1. 開始信號
  2. 發(fā)送 I2C設(shè)備地址,其中高七位是設(shè)備地址,最后一位是讀寫地址。
  3. 從機發(fā)送應(yīng)答信號
  4. 重新發(fā)送開始信號
  5. 發(fā)送要寫入數(shù)據(jù)的寄存器地址
  6. 從機發(fā)送應(yīng)答信號
  7. 發(fā)送要寫入寄存器的數(shù)據(jù)
  8. 從機發(fā)送應(yīng)答信號
  9. 停止信號

ESP32開發(fā)---驅(qū)動觸摸屏?圖來自正點原子linux驅(qū)動開發(fā)教程

I2C讀時序

讀時序相對于寫時序來說復(fù)雜了一點,結(jié)束時多了一個非應(yīng)答信號,以及寫入寄存器地址之后要重新發(fā)從機的地址。

總體的分為四步,跟寫時序差不多。

  1. 發(fā)送設(shè)備地址
  2. 發(fā)送要讀取的寄存器地址
  3. 重新發(fā)送設(shè)備地址
  4. 讀取數(shù)據(jù)

ESP32開發(fā)---驅(qū)動觸摸屏

??圖來自正點原子linux驅(qū)動開發(fā)教程

OK,了解了基本的之后,回到驅(qū)動觸摸屏上來。

我們驅(qū)動一個觸摸屏需要使用到TP,這里使用的是FT6236。

查詢芯片手冊,可以發(fā)現(xiàn)FT6236有四根線。

ESP32開發(fā)---驅(qū)動觸摸屏

兩根是I2C需要的線,還有兩根分別是INT(輸入),RSTN(輸出)。

到這里,就很簡潔明了了。

我們需要用到GPIOI2C,以及TP的驅(qū)動。

首先,將RSTINT利用GPIO進行初始化,并進行相應(yīng)的一些設(shè)置。、

GPIO

GPIO的使用已經(jīng)很熟悉了,這里就不多說了。

簡單的來說就是定義硬件圖所使用的IO口,然后利用寄存器進行相應(yīng)的初始化,實現(xiàn)我們的功能。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/gpio.h"

#include "ds_gpio.h"
#include "ds_system_data_da.h"

//定義IO口,查硬件圖
#define GPIO_OUTPUT_IO_0       5
#define GPIO_OUTPUT_PIN_SEL    ((1ULL<<GPIO_OUTPUT_IO_0))
#define GPIO_INTPUT_IO_0       4
#define GPIO_INTPUT_PIN_SEL    ((1ULL<<GPIO_INTPUT_IO_0))
#define ESP_INTR_FLAG_DEFAULT 0

static xQueueHandle gpio_evt_queue = NULL;

static void IRAM_ATTR gpio_isr_handler(void *arg){
    uint32_t gpio_num = (uint32_t)arg;//強轉(zhuǎn)
    xQueueSendFromISR(gpio_evt_queue,&gpio_num,NULL);
}

//觸摸屏GPIO口初始化
void ds_touch_gpio_init(void){
    gpio_config_t io_conf;
    //rst不需要中斷,關(guān)閉中斷
    io_conf.intr_type = GPIO_PIN_INTR_DISABLE;
    //設(shè)置模式為輸出
    io_conf.mode = GPIO_MODE_OUTPUT;
    //設(shè)置引腳5
    io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
    //設(shè)置上拉和下拉
    io_conf.pull_down_en = 0;
    io_conf.pull_up_en = 0;
    //配置GPIO
    gpio_config(&io_conf);

    //無論上升沿還是下降沿都觸發(fā)
    io_conf.intr_type = GPIO_INTR_ANYEDGE;
    //模式為輸入,根據(jù)手冊判定的
    io_conf.mode = GPIO_MODE_INPUT;
    //設(shè)置為引腳4
    io_conf.pin_bit_mask = GPIO_INTPUT_PIN_SEL;
    //設(shè)置為上拉,默認低電平有效
    io_conf.pull_up_en = 1;
    //配置GPIO
    gpio_config(&io_conf);

    //創(chuàng)建處理gpio事件的消息隊列
    gpio_evt_queue = xQueueCreate(10,sizeof(uint32_t));

    //安裝gpio中斷服務(wù)
    gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT);
    gpio_isr_handler_add(GPIO_INTPUT_IO_0,gpio_isr_handler,(void*)GPIO_INTPUT_IO_0);

}
//復(fù)位
void ds_gpio_set_touch_rst(uint32_t level){

    gpio_set_level(GPIO_OUTPUT_IO_0,level);
}

GPIO比較簡單。

I2C程序編寫

I2C的程序編寫盡量要參考一下ESP32官方給出的手冊,包括讀寫時序的編寫,避免出錯。

相關(guān)API可以在官方文檔里看。

ESP32開發(fā)---驅(qū)動觸摸屏

這是官方例程里帶寄存器讀的例子,可以看到是先設(shè)置寄存器的地址,然后再重新寫入從機地址的,接下來就可以模仿這個開始寫。

首先設(shè)置讀取地址。

//設(shè)置讀取地址
static esp_err_t i2c_master_set_addr(uint8_t u8Cmd){

    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd,(ESP_SLAVE_ADDR<<1)|WRITE_BIT,ACK_CHECK_EN);//設(shè)置從機地址
    i2c_master_write_byte(cmd,u8Cmd,ACK_CHECK_EN);//設(shè)置讀取寄存器地址
    i2c_master_stop(cmd);
    esp_err_t ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_RATE_MS);
    i2c_cmd_link_delete(cmd);
    if (ret != ESP_OK) {
        printf("i2c_master_set_addr error\n");
    }
    return ret;

}

然后進行讀時序。

//讀取數(shù)據(jù)

esp_err_t i2c_master_read_slave(uint8_t u8Cmd, uint8_t *data_rd, size_t size){
if(size == 0){
    return ESP_OK;
}
i2c_master_set_addr(u8Cmd);//設(shè)置要讀取的寄存器地址
vTaskDelay(30 / portTICK_RATE_MS);//延時24ms
//然后再次寫入從機地址,并加上獨標(biāo)志位
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
i2c_master_start(cmd);
i2c_master_write_byte(cmd,(ESP_SLAVE_ADDR<<1)|READ_BIT,ACK_CHECK_EN);
for(int index = 0;index<(size-1);index++){

    i2c_master_read_byte(cmd,data_rd+index,ACK_VAL);
}
i2c_master_read_byte(cmd,data_rd+size-1,NACK_VAL);//發(fā)送非應(yīng)答信號
i2c_master_stop(cmd);
esp_err_t ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_RATE_MS);
    i2c_cmd_link_delete(cmd);
    if (ret != ESP_OK) {
        printf("i2c_master_read_slave error\n");
    }
    return ret;

}

寫時序就比較簡單了。

//寫入數(shù)據(jù),不需要發(fā)非應(yīng)答信號
esp_err_t i2c_master_write_slave(uint8_t u8Cmd, uint8_t *data_wr, size_t size){
 
    i2c_cmd_handle_t cmd = i2c_cmd_link_create();
    i2c_master_start(cmd);
    i2c_master_write_byte(cmd, (ESP_SLAVE_ADDR << 1) | WRITE_BIT, ACK_CHECK_EN);
    i2c_master_write_byte(cmd, u8Cmd, ACK_CHECK_EN);
    i2c_master_write(cmd, data_wr, size, ACK_CHECK_EN);
    i2c_master_stop(cmd);

    esp_err_t ret = i2c_master_cmd_begin(I2C_MASTER_NUM, cmd, 1000 / portTICK_RATE_MS);
    i2c_cmd_link_delete(cmd);
    if (ret != ESP_OK) {
        printf("i2c_master_write_slave error\n");
    }
    return ret;


}

在進行這些之前,還需要初始化一下我們的I2C。

這就涉及到一些宏定義,可以采用KConfig進行定義,可以直接寫值,但是這里還是建議用Kconfig進行定義。

初始化的代碼直接參考例程,幾乎不怎么需要修改,只需要把SCL和SDA的引腳重新定義一下,適合我們的開發(fā)板就行。

//初始化
esp_err_t i2c_master_init(void)
{
    int i2c_master_port = I2C_MASTER_NUM;
    i2c_config_t conf;
    conf.mode = I2C_MODE_MASTER;
    conf.sda_io_num = I2C_MASTER_SDA_IO;
    conf.sda_pullup_en = GPIO_PULLUP_ENABLE;
    conf.scl_io_num = I2C_MASTER_SCL_IO;
    conf.scl_pullup_en = GPIO_PULLUP_ENABLE; 
    conf.master.clk_speed = I2C_MASTER_FREQ_HZ;
    i2c_param_config(i2c_master_port, &conf);
    return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}

好了,I2C就已經(jīng)可以了。

然后開始寫最重要的一步,TP的驅(qū)動,這個是需要我們自己查芯片手冊,然后一步步編寫的。

TP驅(qū)動

觀察芯片手冊。

ESP32開發(fā)---驅(qū)動觸摸屏

?圈出來的這里,就是我們用I2C寫入或者讀取的寄存器了。

在頭文件里進行定義。

//由FT6236芯片手冊查詢得到各部分寄存器地址
#define FI_DEVIDE_MODE      0x00       //FT6236模式控制寄存器
#define FI_REG_NUM_FINGER   0x02       //觸摸狀態(tài)寄存器

#define FI_TP1_REG          0x03       //第一個觸摸點數(shù)據(jù)地址
#define FI_TP2_REG          0x09       //第一個觸摸點數(shù)據(jù)地址
#define FI_TP3_REG          0x0F       //第一個觸摸點數(shù)據(jù)地址
#define FI_TP4_REG          0x15       //第一個觸摸點數(shù)據(jù)地址
#define FI_TP5_REG          0x1B       //第一個觸摸點數(shù)據(jù)地址

#define FI_ID_G_LIB_VERSION   0xA1       //版本
#define FI_ID_G_MODE          0xA4       //FT6236中斷模式控制寄存器
#define FI_ID_G_THGROUP       0x80       //觸摸有效值設(shè)置寄存器
#define FI_ID_G_PERIODACTIVE  0x88       //激活狀態(tài)周期設(shè)置寄存器
#define Chip_Vendor_ID        0xA3       //芯片ID(0x36)
#define ID_G_FT6236ID         0xA8       //0x11

然后定義觸摸點的結(jié)構(gòu)體。

//觸摸點相關(guān)數(shù)據(jù)結(jié)構(gòu)定義
typedef struct
{
    //bit7:按下1/松開0
    //bit6: 沒有按鍵按下0/有按鍵按下1
    //bit5:保留
    //bit4-bit0:觸摸點按下有效標(biāo)志,有效為1,對應(yīng)五個觸摸點
    uint8_t touch_sta; //觸摸點的情況
    uint8_t touch_count; //觸摸點數(shù)
    uint16_t x[5];
    uint16_t y[5];
    bool updata;
}TouchPoint_T;

定義一下觸摸屏被按下或松開的標(biāo)記。

#define TP_PRESS_DOWN    0x80  //觸摸屏被按下,0x10000000,第七位為1
#define TP_COORD_UD      0x40  //觸摸屏坐標(biāo)更新,第六位為1

其他的就看自己的用途定義了,基本就是這些了。

然后就可以開始編寫驅(qū)動了,主要參考ESP里的相關(guān)例程,以及FT6236的一些源碼。

#include <string.h>
#include <stdio.h>

#include "ds_tp.h"
#include "ds_i2c.h"
#include "ds_gpio.h"
#include "ds_system_data_da.h"

//觸摸芯片最大5組觸摸點,F(xiàn)T6236最大支持雙觸
const uint16_t FT6236_TPX_TBL[5]=
{
    FI_TP1_REG,
    FI_TP2_REG,
    FI_TP3_REG,
    FI_TP4_REG,
    FI_TP5_REG
};

TouchPoint_T gTPS;

//掃描觸摸屏寄存器狀態(tài)、數(shù)據(jù)
static void scan_ft6236(void)
{
    uint8_t i=0;
    uint8_t sta = 0;//觸摸點狀態(tài)
    uint8_t buf[4] = {0};//這里是獲取四個字節(jié),分別是xH、xL、yH、yL
    uint8_t gestid = 0;//手勢
    i2c_master_read_slave(0x02,&sta,1);//讀取寄存器狀態(tài),讀取的是個數(shù)!
    gTPS.touch_count = sta;
    i2c_master_read_slave(0x01,&gestid,1);//讀取觸摸點的狀態(tài)

    if(sta&0x0f)//判斷有無觸摸點按下
    {

        gTPS.touch_sta = ~(0xFF << (sta & 0x0F));//將有效觸摸點的個數(shù)轉(zhuǎn)換為對應(yīng)的標(biāo)記
        for (i = 0; i < 2; i++)//最多同時兩個觸摸點
        {
            if (gTPS.touch_sta & (1 << i))
            {
                i2c_master_read_slave(FT6236_TPX_TBL[i], buf, 4); // 讀取觸摸點坐標(biāo)
                gTPS.x[i] = (uint16_t)(((buf[0]&0x0F)<<8)+buf[1]);//清空XH的高四位,并左移8位與XL組成坐標(biāo)
                gTPS.y[i] = (uint16_t)(((buf[2]&0x0F)<<8)+buf[3]);
            }
        }
        gTPS.touch_sta |= TP_PRESS_DOWN; //按下標(biāo)記,置1

    }
    else //如果判斷無觸摸點按下,那么檢查一下之前的標(biāo)記
    {
        if(gTPS.touch_sta & TP_PRESS_DOWN)//如果之前被按下了
        {
            gTPS.touch_sta &= ~0x80; //清楚按下標(biāo)記
        }
        else//
        {
            gTPS.x[0]=0;
            gTPS.y[0]=0;
            gTPS.touch_sta &= 0xe0;//將后五位清0,這一塊還是有點疑慮
        }

    }
    
}

//轉(zhuǎn)換為實際位置
static void count_position_ft6236(TP_POSITION_T *position){

    switch (gTPS.touch_count)
    {
      case 1:
           if ((gTPS.x[0] != 0) && (gTPS.y[0] != 0) 
            && (gTPS.x[0] < 200) && (gTPS.y[0] < 200))
           {
                position->x = gTPS.x[0];
                position->y = gTPS.y[0];
                printf("觸摸點的個數(shù)=%d\r\n", gTPS.touch_count);
                printf("x0:%d,y0:%d\r\n", gTPS.x[0], gTPS.y[0]);
                return;
            }
            break;
        case 2:
             if ((gTPS.x[0] != 0) && (gTPS.y[0] != 0) 
            && (gTPS.x[0] < 200) && (gTPS.y[0] < 200) 
            && (gTPS.x[0] < 200) && (gTPS.y[0] < 200) 
            && (gTPS.x[1] < 200) && (gTPS.y[1] < 200))
           {
                printf("觸摸點個數(shù)::%d\r\n", gTPS.touch_count); // FT6336U最多支持兩點觸控
                printf("x0:%d,y0:%d\r\n", gTPS.x[0], gTPS.y[0]);
                printf("x1:%d,y1:%d\r\n", gTPS.x[1], gTPS.y[1]);
            }
            break;

        default:
            break;
    }
    for (int i = 0; i < 2; i++)
    {
        gTPS.x[i] = 0;
        gTPS.y[i] = 0;
    }
    position->status = 0;
    position->x = gTPS.x[0];
    position->y = gTPS.y[0];
}


void get_ft6236_touch_sta(TP_POSITION_T *position){
    scan_ft6236();
    count_position_ft6236(position);
}



void init_ft6236(void){

    uint8_t w_data,r_data = 0;
    memset(&gTPS,0,sizeof(TouchPoint_T));//清0

    //GPIO初始化,INT中斷和復(fù)位引腳
    ds_touch_gpio_init();
    //復(fù)位初始化,拉低
    ds_gpio_set_touch_rst(GPIO_RST_LOW);
    vTaskDelay(50 / portTICK_PERIOD_MS);
    ds_gpio_set_touch_rst(GPIO_RST_HIGH);
    vTaskDelay(100 / portTICK_PERIOD_MS);
    //I2C初始化
    i2c_master_init();
    vTaskDelay(100 / portTICK_PERIOD_MS);

    w_data = 0;
    //設(shè)置正常操作模式
    i2c_master_write_slave(FI_DEVIDE_MODE,&w_data,1);
    w_data = 22;
    //設(shè)置觸摸有效值22,越小越靈敏
 	i2c_master_write_slave(FI_ID_G_THGROUP,&w_data,1);	    
    i2c_master_read_slave(FI_ID_G_THGROUP,&r_data,1);
    printf("init THGROUP = %d \n",r_data);
    //設(shè)置激活周期 不能小于12 最大14
 	i2c_master_write_slave(FI_ID_G_PERIODACTIVE,&w_data,1); 
	i2c_master_read_slave(FI_ID_G_PERIODACTIVE,&r_data,1);
    printf("init PERIODACTIVE = %d \n",r_data);
	w_data = 0;
	//中斷產(chǎn)生方式 持續(xù)電平
	i2c_master_write_slave(FI_ID_G_MODE,&w_data,1);
	i2c_master_read_slave(FI_ID_G_MODE,&r_data,1);
    printf("init G_MODE = %d \n",r_data);
}

結(jié)合芯片手冊去看,更能夠理解,包括細節(jié)性的東西我都在代碼里注釋了,也是給自己留一個記錄。

實驗

OK,這些都寫好了之后,在主函數(shù)里面進行調(diào)用。

ESP32開發(fā)---驅(qū)動觸摸屏

?編譯一下,成功之后上開發(fā)板進行測試!

ESP32開發(fā)---驅(qū)動觸摸屏

可以看到,實驗是成功了!

觸摸屏初級的使用就已經(jīng)到這里完成了。

雖然寫的不多,但是花的時間是真的多啊。


以上參考正點原子linux驅(qū)動開發(fā)教程、FT6x36芯片手冊,野火STM32庫文件開發(fā)教程等...文章來源地址http://www.zghlxwxcb.cn/news/detail-474760.html

到了這里,關(guān)于ESP32開發(fā)---驅(qū)動觸摸屏的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 全志V3S嵌入式驅(qū)動開發(fā)(觸摸屏驅(qū)動)

    全志V3S嵌入式驅(qū)動開發(fā)(觸摸屏驅(qū)動)

    【 聲明:版權(quán)所有,歡迎轉(zhuǎn)載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 所謂的觸摸屏,其實就是在普通的lcd屏幕之上,再加一層屏而已。這個屏是透明的,這樣客戶就可以看到下面lcd屏幕的內(nèi)容,另外一方面,通過觸摸信號,還可以實現(xiàn)人和機器的自然

    2024年02月08日
    瀏覽(30)
  • Linux 觸摸屏 (IIC驅(qū)動詳解)

    Linux 觸摸屏 (IIC驅(qū)動詳解)

    本文使用觸摸屏iic驅(qū)動,驅(qū)動編寫中要使用 總線,設(shè)備,驅(qū)動 分層的思想,IIC總線,觸摸屏驅(qū)動,觸摸屏設(shè)備, ? 一般 SOC 的 I2C 總線驅(qū)動都是由半導(dǎo)體廠商編寫的,比如 I.MX6U 的 I2C 適配器驅(qū)動 NXP 已經(jīng)編寫好了,這個不需要用戶去編寫。因此 I2C 總線驅(qū)動對我們這些 SOC 使

    2023年04月11日
    瀏覽(29)
  • STM32F103C8T6+2.4寸SPI TFT觸摸屏代碼+標(biāo)準(zhǔn)庫 項目開發(fā)

    STM32F103C8T6+2.4寸SPI TFT觸摸屏代碼+標(biāo)準(zhǔn)庫 項目開發(fā)

    目錄 模塊清單: 模塊介紹: 1:STM32F103C8T6 2:2.4寸SPI TFT觸摸屏 項目結(jié)果展示 2.4寸 TFT SPI顯示觸摸屏 2.4寸 SPI TFT 顯示觸摸屏代碼下載鏈接: https://download.csdn.net/download/weixin_49492286/88458377 清單 STM32F103C8T6 2.4寸SPI TFT觸摸屏 ????????STM32F103C8T6是意法半導(dǎo)體(STMicroelectronics)推

    2024年02月07日
    瀏覽(88)
  • mipi接口 1280(RGB)*720 LCD屏開發(fā)驅(qū)動筆記帖
1、MTK8788[android 9.0]GT9XX TP觸摸屏驅(qū)動流程分析

    mipi接口 1280(RGB)*720 LCD屏開發(fā)驅(qū)動筆記帖 1、MTK8788[android 9.0]GT9XX TP觸摸屏驅(qū)動流程分析

    ps:創(chuàng)業(yè)開發(fā)產(chǎn)品,自學(xué)筆記,不一定適合教材性的閱讀,零碎整理,自我總結(jié)用 材料:4.1寸lcd屏兩塊,屏自帶觸控,屏幕資料具備,rk3399和MK8788開發(fā)版上分別開發(fā)。 1】rk3399 ? ? ? ??????? 開發(fā)板:友善的rk3399v2開發(fā)版, 資料鏈接 : 處理器:RK3399 內(nèi)核: 編譯工具

    2023年04月08日
    瀏覽(125)
  • 嵌入式培訓(xùn)機構(gòu)四個月實訓(xùn)課程筆記(完整版)-Linux ARM驅(qū)動編程第三天-ARM Linux ADC和觸摸屏開發(fā) (物聯(lián)技術(shù)666)

    嵌入式培訓(xùn)機構(gòu)四個月實訓(xùn)課程筆記(完整版)-Linux ARM驅(qū)動編程第三天-ARM Linux ADC和觸摸屏開發(fā) (物聯(lián)技術(shù)666)

    鏈接:https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd=1688 提取碼:1688 ? 教學(xué)內(nèi)容: 1 、 ADC S3C2440 的 A/D 轉(zhuǎn)換器包含一個 8 通道的模擬輸入轉(zhuǎn)換器,可以將模擬輸入信號轉(zhuǎn)換成 10 位數(shù)字編碼。 在 A/D 轉(zhuǎn)換時鐘頻率為 2.5MHz 時,其最大轉(zhuǎn)換率為 500KSPS ( 5 個時鐘周期完成一次轉(zhuǎn)換) 輸

    2024年02月20日
    瀏覽(26)
  • 【Liux下6818開發(fā)板(ARM)】觸摸屏

    【Liux下6818開發(fā)板(ARM)】觸摸屏

    (??? ),hello我是 祐言 博客主頁:C語言基礎(chǔ),Linux基礎(chǔ),軟件配置領(lǐng)域博主?? 快上??,一起學(xué)習(xí)! 送給讀者的一句雞湯??: 集中起來的意志可以擊穿頑石! 作者水平很有限,如果發(fā)現(xiàn)錯誤,可在評論區(qū)指正,感謝?? ? ? ? ? 在正式學(xué)習(xí)觸摸屏之前,我們先來了解一下事件

    2024年02月14日
    瀏覽(22)
  • 【ChatGpt】ChatGpt解答了 “我一下午都沒解決的“ Linux觸摸屏驅(qū)動的問題

    【ChatGpt】ChatGpt解答了 “我一下午都沒解決的“ Linux觸摸屏驅(qū)動的問題

    現(xiàn)實問題: 有一個基于Linux4.19內(nèi)核開發(fā)了,在海思SS528芯片運行的系統(tǒng),用鼠標(biāo)可以正常使用。 現(xiàn)在要求使用一塊公司開發(fā)的 多點觸控屏 連接這個系統(tǒng),能正常使用。 分析問題: 要在LInux系統(tǒng)使用觸控屏,可能需要移植 tslib 的庫,這個有以前做過,可以自己解決。 移植后

    2024年02月07日
    瀏覽(22)
  • 【SA8295P 源碼分析】66 - Android 側(cè)內(nèi)核層 TouchScreen Panel(TP)觸摸屏驅(qū)動源碼分析

    【源碼分析】 因為一些原因,本文需要移除, 對于已經(jīng)購買的兄弟,不用擔(dān)心,不是跑路, 我會繼續(xù)持續(xù)提供技術(shù)支持, 有什么模塊想學(xué)習(xí)的,或者有什么問題有疑問的, 請私聊我,我們 +VX 溝通技術(shù)問題,一起學(xué)習(xí),一起進步 接下來,我一一私聊已經(jīng)購買的兄弟添加V

    2024年02月11日
    瀏覽(42)
  • 【觸摸屏功能測試】昆侖通態(tài)MCGS——測試通過HJ212_TCPIP驅(qū)動4G功能發(fā)送212報文

    【觸摸屏功能測試】昆侖通態(tài)MCGS——測試通過HJ212_TCPIP驅(qū)動4G功能發(fā)送212報文

    型號 :TPC7022Ni 測試內(nèi)容: 實現(xiàn)4G觸摸屏,通過自帶的4G卡向平臺發(fā)送HJ212報文 本驅(qū)動構(gòu)件用于MCGS軟件,通過污染物在線監(jiān)控(監(jiān)測)系統(tǒng)數(shù)據(jù)傳輸標(biāo)準(zhǔn)協(xié)議向下位機數(shù)采儀發(fā)送各類指令; 驅(qū)動類型 以太網(wǎng)子設(shè)備,須掛接在“通用TCPIP父設(shè)備”下才能工作 通訊協(xié)議 污染物在線監(jiān)控

    2024年02月07日
    瀏覽(95)
  • 中文編程工具開發(fā)語言開發(fā)的實際案例:觸摸屏點餐軟件應(yīng)用場景實例

    中文編程工具開發(fā)語言開發(fā)的實際案例:觸摸屏點餐軟件應(yīng)用場景實例

    中文編程工具開發(fā)語言開發(fā)的實際案例:觸摸屏點餐軟件應(yīng)用場景實例 軟件特色: 1、功能實用,操作簡單,不會電腦也會操作,軟件免安裝,已內(nèi)置數(shù)據(jù)庫。軟件在關(guān)閉的時候,可以設(shè)置會員數(shù)據(jù)備份到U盤,數(shù)據(jù)本機備份一份,U盤備份一份,雙重備份數(shù)據(jù)安全。 2、軟件既

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包