日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

操作GPIO的方法(在Windows CE下環(huán)境下)

出處:互聯(lián)網(wǎng)    發(fā)布于:2011-09-04 14:40:10

  General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,總線擴(kuò)展器利用工業(yè)標(biāo)準(zhǔn)I2C、SMBus?或SPI?接口簡化了I/O口的擴(kuò)展。當(dāng)微控制器或芯片組沒有足夠的I/O端口,或當(dāng)系統(tǒng)需要采用遠(yuǎn)端串行通信或控制時(shí),GPIO產(chǎn)品能夠提供額外的控制和監(jiān)視功能。GPIO是ARM芯片基本的輸入輸出通道,在ADS下操作就是一個(gè)單片機(jī)工作,直接讀寫其寄存器。在ARM9平臺(tái)上,Windows CE系統(tǒng)將GPIO的實(shí)地址(例如2410的GPIO的基地址為0x56000000)映射到虛擬地址空間(GPIO對(duì)應(yīng)為0xB1600000),這樣,通過對(duì)這段虛擬地址空間的操作,就能夠完成對(duì)GPIO或者其他片內(nèi)資源的控制、輸入輸出工作。

  GPIO分類:硬件/嵌入開發(fā) 驅(qū)動(dòng)開發(fā)/開發(fā)

  每個(gè)GPIO端口可通過軟件分別配置成輸入或輸出。Maxim的GPIO產(chǎn)品線包括8端口至28端口的GPIO,提供推挽式輸出或漏極開路輸出。提供微型3mm x 3mm QFN封裝。
  要操作一個(gè)平臺(tái)的GPIO,在其對(duì)應(yīng)BSP中按照基地址,找到虛擬地址,并且找到方便操作這個(gè)地址的數(shù)據(jù)結(jié)構(gòu)就可以了,關(guān)鍵函數(shù)就是 VirtualAlloc和VirtualCopy。并且CE的方便之處就是用戶態(tài)的應(yīng)用程序仍然可以使用這兩個(gè)函數(shù)來訪問所有這些虛擬空間,對(duì)于不太復(fù) 雜的程序,甚至可以省略寫驅(qū)動(dòng)直接在應(yīng)用程序中操作,其實(shí)在CE6之前,這些驅(qū)動(dòng)也是工作在用戶態(tài)的。

  GPIO的優(yōu)點(diǎn)(端口擴(kuò)展器)

  低功耗:GPIO具有更低的功率損耗(大約1μA,μC的工作電流則為100μA)。
  集成IIC從機(jī)接口:GPIO內(nèi)置IIC從機(jī)接口,即使在待機(jī)模式下也能夠全速工作。
  小封裝:GPIO器件提供的封裝尺寸 ― 3mm x 3mm QFN!
  低成本:您不用為沒有使用的功能買單!
  快速上市:不需要編寫額外的代碼、文檔,不需要任何維護(hù)工作!
  靈活的燈光控制:內(nèi)置多路高分辨率的PWM輸出。
  可預(yù)先確定響應(yīng)時(shí)間:縮短或確定外部事件與中斷之間的響應(yīng)時(shí)間。
  更好的燈光效果:匹配的電流輸出確保均勻的顯示亮度。
  布線簡單:僅需使用2條就可以組成IIC總線或3條組成SPI總線。
  于ARM 的幾組GPIO引腳,功能相似,GPxCON 控制引腳功能,GPxDAT用于讀寫引腳數(shù)據(jù)。另外,GPxUP用于確定是否使用上拉電阻。 x為A,B,,H/J, 沒有上拉電阻。

  操作Samsung S3C2410的GPIO為例,講述這個(gè)步驟:

  1.首先在BSP中的s2410.h文件,找到虛擬地址映射以及操作GPIO的寄存器結(jié)構(gòu)體(這個(gè)在自己制作一些特殊設(shè)備的BSP時(shí),會(huì)依據(jù)需要而發(fā)生更改)
  //
  // Registers : I/O port
  //#define IOP_BASE      0xB1600000 // 0x56000000
  typedef struct  {
  unsigned int  rGPACON;  // 00
  unsigned int  rGPADAT;
  unsigned int  rPAD1[2];
  unsigned int  rGPBCON;  // 10
  unsigned int  rGPBDAT;
  unsigned int  rGPBUP;
  unsigned int  rPAD2;
  unsigned int  rGPCCON;  // 20
  unsigned int  rGPCDAT;
  unsigned int  rGPCUP;
  unsigned int  rPAD3;
  unsigned int  rGPDCON;  // 30
  unsigned int  rGPDDAT;
  unsigned int  rGPDUP;
  unsigned int  rPAD4;
  unsigned int  rGPECON;  // 40
  unsigned int  rGPEDAT;
  unsigned int  rGPEUP;
  unsigned int  rPAD5;
  unsigned int  rGPFCON;  // 50
  unsigned int  rGPFDAT;
  unsigned int  rGPFUP;
  unsigned int  rPAD6;
  unsigned int  rGPGCON;  // 60
  unsigned int  rGPGDAT;
  unsigned int  rGPGUP;
  unsigned int  rPAD7;
  unsigned int  rGPHCON;  // 70
  unsigned int  rGPHDAT;
  unsigned int  rGPHUP;
  unsigned int  rPAD8;
  unsigned int  rMISCCR;  // 80
  unsigned int  rDCKCON;
  unsigned int  rEXTINT0;
  unsigned int  rEXTINT1;
  unsigned int  rEXTINT2;  // 90
  unsigned int  rEINTFLT0;
  unsigned int  rEINTFLT1;
  unsigned int  rEINTFLT2;
  unsigned int  rEINTFLT3;  // A0
  unsigned int  rEINTMASK;
  unsigned int  rEINTPEND;
  unsigned int  rGSTATUS0;  // AC
  unsigned int  rGSTATUS1;  // B0
  unsigned int  rGSTATUS2;  // B4
  unsigned int  rGSTATUS3;  // B8
  unsigned int  rGSTATUS4;  // BC
  }IOPreg;
  將這些復(fù)制備用。
  2.在EVC中建立一個(gè)應(yīng)用程序工程,由于VirtualCopy函數(shù)沒有在頭文件中定義,但是在coredll.lib里面提供了符號(hào)連接,所以我們這里直接添加一個(gè)函數(shù)定義就OK了。
  #ifdef __cplusplus
  extern "C"
  {
  #endif
  BOOL VirtualCopy( LPVOID, LPVOID, DWORD, DWORD );
  #ifdef __cplusplus
  }
  #endif
  同時(shí)將步驟1里面的定義復(fù)制到這里。
  3.按照驅(qū)動(dòng)程序里面操作的方法在應(yīng)用程序中寫GPIO操作函數(shù)
 ?。?)定義一個(gè)寄存器結(jié)構(gòu)體變量
  volatile IOPreg *v_pIOPRegs;
  (2)給這個(gè)變量分配空間并且映射到寄存器的空間上
  v_pIOPRegs = (volatile IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
  if (v_pIOPRegs == NULL)
  {
  DEBUGMSG (1,(TEXT("v_pIOPRegs is not allocated ")));
  return TRUE;
  }
  if (!VirtualCopy((PVOID)v_pIOPRegs, (PVOID)IOP_BASE, sizeof(IOPreg), PAGE_READWRITE|PAGE_NOCACHE)) {
  DEBUGMSG (1,(TEXT("v_pIOPRegs is not mapped ")));
  return TRUE;
  }
  DEBUGMSG (1,(TEXT("v_pIOPRegs is mapped to %x "), v_pIOPRegs));
  這3個(gè)步驟之后,對(duì)v_pIOPRegs的操作將直接和GPIO的寄存器關(guān)聯(lián)
  例如:設(shè)置GPB的控制寄存器為全部Output
  v_pIOPRegs->rGPBCON=0x155555;
  設(shè)置GPB的數(shù)據(jù)寄存器輸出高電平
  v_pIOPRegs->rGPBDAT=0x3FF;
 

  
關(guān)鍵詞:GPIO

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動(dòng)力!意見一經(jīng)采納,將有感恩紅包奉上哦!