2010年9月30日 星期四

ARM - S3C6410 教學開發板擴充 GPIO( 可達上千上萬IO ):用於 16X2 LCD、SEG7x3、LEDx8、KEYx8等

在開發 ARM 嵌入式系統時,常會覺得 GPIO 不太夠用。經我仔細了解 S 3C 6410 規格(SPEC) 後,經過一些改良設計,成功的擴充了 IO我將這些擴充的GPIO,用來連接 16X2 LCDSEG7 x 3LEDx8KEY x 8。同時間撰寫其驅動程式:16X 2 L CD驅動程式、、SEG7 x 3驅動程式、LEDx8驅動程式、KEY x 8驅動程式。總共 先擴充出 39 IO,但這一技巧,不是僅能擴充少少的IO而是經過 這一個設計後,是可擴充出多達上千上萬個 IO 出來。這一技巧最多僅用到一個 ARM-S3C6410 GPIO接腳,而這些被擴充出來的IO,其速度可以與CPU的BUS速度同步的喔^^



當 撰寫好 驅動程式與對應之應用程式,分別將其下載到  ARM-S3C6410 教學開發板後。首先在 超級終端機 上下達如下指令:


 


[root@S3C6410 /]# mknod /dev/LCD c 99 0
[root@S3C6410 /]# insmod /lib/modules/2.6.28.6-ARMS3C6410/lcd.ko
Hello, world
CYH's age=1
[root@S3C6410 /]# cd /tmp
[root@S3C6410 /tmp]# chmod 777 *
[root@S3C6410 /tmp]# ./lcdap.exe


 


您可以看到,在LCD 16x2 Device 上 第一行 show出 " Hello CYH^^ ",第二行 show 出 "Hello TCFST", 同時間 擴充出來的 8 個 LED作同時 "閃爍"/OnOff動作。另外,擴充出來接在 SEG7 x 3的裝置,分別 秀出 8。


以下圖示為在ARM - S3C6410 教學開發板上的執行結果:



 


我這裡同時分享此應用程式之程式碼:


 


#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

#include <string.h>


#include <stdlib.h>


struct LCDStr
{
  unsigned char STR[16];
  int line;
};
int main( int a, char* b[] )
{
  struct LCDStr STRL1,STRL2;


  int fd = open ( "/dev/LCD", O_RDWR );


  if( fd <=0 )
  {
    printf( "Open fail!!\r\n" );
   return -1;
  }
 strcpy( STRL1.STR , "Hello CYH^^" );
 STRL1.line = 1; 


 strcpy( STRL2.STR , "Hello TCFST" );
 STRL2.line = 2;
 
  write( fd , (void*)(&STRL1), sizeof(struct LCDStr) );
  write( fd , (void*)(&STRL2), sizeof(struct LCDStr) );


  close( fd );


  return 0; 
}


 


 


6 則留言:

  1. 前輩你好....
    小弟最近在S3C6410的晶片使用上剛好需要擴充 GPIO
    所以想請教一些細節
    請問你是用GPIO的哪一個PORT?
    需要外加編解碼電路嗎?
    擴充 GPIO可規劃成Input/Output,還是電路一開始就決定了呢?

    回覆刪除
  2. 您可以 透過 0918197988 與我聯繫

    回覆刪除
  3. 您可以 透過 0918197988 與我聯繫

    回覆刪除
  4. Hi, 前輩您好

    請問一隻腳擴充成多隻腳是如何擴充的呢?

    以及中斷腳EINT一樣可以這樣擴充嗎?

    謝謝.

    回覆刪除
  5. 江先生你好,本人使用ARM-M3 Texas Instrument -LM3S6969請問如何增加GPIO,是從記憶體位址嗎?
    還請教如何擴充memory,謝謝!!

    回覆刪除
  6. 不好意思,本人e-mail沒附上bluekw810388@gmail.com

    回覆刪除

FPGA Verilog 的學習經驗,提供給要入門的新手

今天簡單說說 FPGA Verilog 的學習經驗,提供給要入門的新手: 1.對自己寫的FPGA Verilog程式,所生成的數位電路要心中有數。 這一點個人認為很重要,就正如寫 C語言,心中要能生成對應的組合語言一樣,我是這樣要求自己的。 雖然 FPGA Verilog語言...