基於AT91SAM7 MCU的UC GUI的移植

2021-04-06 17:52:11 字數 2836 閱讀 4586

硬體設計方面主要是at91sam7晶元與有t6963驅動器的160*128單色顯示屏介面。觸控螢幕設計主要是四線電阻式觸控螢幕和ads7843晶元連線再接at91sam7晶元的spi介面上,pirq角與mcu上的irq0外部中斷引腳相連線。

uc/gui在這個晶元上的移植很簡單,主要還是對t6963驅動器的移植。首先要修改的檔案是lcdconf.h檔案,這個是gui的配置標頭檔案。將該檔案做如下修改

#define lcd_xsize          (160)     

#define lcd_ysize          (128)     

#define lcd_controller     (6963)

#define lcd_bitsperpixel   (1)

void lcd_x_write00(char c);

void lcd_x_write01(char c);

char lcd_x_read01(void);

#define lcd_write_a1(byte) lcd_x_write01(byte)  //寫命令  

#define lcd_write_a0(byte) lcd_x_write00(byte)  //寫資料

#define lcd_read_a1()      lcd_x_read01()             //讀狀態

這裡定義了三個和硬體介面有關的函式,直接和硬體驅動有關的函式。在乙個lcdlib.c檔案中定義這個函式。

由於uc/gui有對6963的驅動檔案lcdslin.c檔案,所以在簡化了不少移植工作。接下來主要修改的就是gui與os介面的幾個函式在gui_x_ucos.c檔案中。

int gui_x_gettime(void)

void gui_x_delay(int period)

void gui_x_execidle(void)

tatic os_event * dispsem;

u32  gui_x_gettaskid(void)

void gui_x_initos(void)   

void gui_x_unlock(void)   

void gui_x_lock(void)

void gui_x_init(void) {}

由於使用了t6963控制器,gui的移植就簡化了不少工作。接下來主要在對於觸控螢幕驅動的編寫。由於使用的是ads7843晶元,這在網上有很多資料可以參考,所以驅動不是很大的問題,主要是用at91sam7晶元的spi口對晶元進行操作,而不需要用微控制器的方式模擬spi操作,這樣簡單了不少。gui_touch_driveranalog.c檔案主要編寫了乙個中斷處理函式irq0_handle(void);主要是當有筆觸中斷時,給ads7843傳送命令取x或y的數值用 硬體設計方面主要是at91sam7晶元與有t6963驅動器的160*128單色顯示屏介面。觸控螢幕設計主要是四線電阻式觸控螢幕和ads7843晶元連線再接at91sam7晶元的spi介面上,pirq角與mcu上的irq0外部中斷引腳相連線。

uc/gui在這個晶元上的移植很簡單,主要還是對t6963驅動器的移植。首先要修改的檔案是lcdconf.h檔案,這個是gui的配置標頭檔案。將該檔案做如下修改

#define lcd_xsize          (160)     

#define lcd_ysize          (128)     

#define lcd_controller     (6963)

#define lcd_bitsperpixel   (1)

void lcd_x_write00(char c);

void lcd_x_write01(char c);

char lcd_x_read01(void);

#define lcd_write_a1(byte) lcd_x_write01(byte)  //寫命令  

#define lcd_write_a0(byte) lcd_x_write00(byte)  //寫資料

#define lcd_read_a1()      lcd_x_read01()             //讀狀態

這裡定義了三個和硬體介面有關的函式,直接和硬體驅動有關的函式。在乙個lcdlib.c檔案中定義這個函式。

由於uc/gui有對6963的驅動檔案lcdslin.c檔案,所以在簡化了不少移植工作。接下來主要修改的就是gui與os介面的幾個函式在gui_x_ucos.c檔案中。

int gui_x_gettime(void)

void gui_x_delay(int period)

void gui_x_execidle(void)

tatic os_event * dispsem;

u32  gui_x_gettaskid(void)

void gui_x_initos(void)   

void gui_x_unlock(void)   

void gui_x_lock(void)

void gui_x_init(void) {}

由於使用了t6963控制器,gui的移植就簡化了不少工作。接下來主要在對於觸控螢幕驅動的編寫。由於使用的是ads7843晶元,這在網上有很多資料可以參考,所以驅動不是很大的問題,主要是用at91sam7晶元的spi口對晶元進行操作,而不需要用微控制器的方式模擬spi操作,這樣簡單了不少。gui_touch_driveranalog.c檔案主要編寫了乙個中斷處理函式irq0_handle(void);主要是當有筆觸中斷時,給ads7843傳送命令取x或y的數值用gui_touch_storestate(x,y)儲存並在其他函式中呼叫。

大致的移植過程就是這個樣子,因為用了6963這個控制晶元和ads7843晶元,程式編寫量大大減小。詳細的不再累述。

編譯核心for at91sam9260

注意 1 在核心編譯時,在編譯的過程 現錯誤也會生成輸出檔案,這個檔案是不能用的。2 在clean 後進行編譯時的 花費時間 4分鐘,檔案大小為約 1.33m 3 在不clean 直接進行編譯時的 花費時間 12秒,檔案大小為約 1.33m make zimage檔案是指令碼檔案,由它來設定引數,以...

AT91SAM9260開發環境的搭建

由於at91sam上移植的是2.6版本的核心,交叉編譯工具版本不宜過高,所以這裡ubuntu系統也選擇的是10.04版本 ubuntu1004版本的源更新 中文系統配置 vim作為開發時最常用的編輯器,它的配置可以影響到你的工作效率。vim配置 設定固定的ip位址 方便開發板與虛擬機器連線時的穩定。...

AT91SAM9260硬體時鐘RTC的使用

一 硬體要求 1 at91sam9260平台 2 時鐘晶元 rx8025 sa nb 3 介面 通過i2c 匯流排讀取,兩條匯流排為pa23 pa24。二 配置核心 進入核心根目錄下,執行配置選單。make menuconfig 1 選中i2c device drivers i2c suport i...