簡體   English   中英

示例代碼,作為7段LCD驅動器的MCP23017(16引腳IO擴展器,I2C)上的文檔

[英]example code, documents on MCP23017 (16 pin IO extender, I2C) as an 7-segment LCD driver

Microchip的MCP23017是基於I2C的16引腳IO擴展器。 我已經能夠設置一次該設備(設置引腳方向和值),但是在那之后,除非重置/重啟設備,否則我無法按預期更改值。 這是我用來初始化並第一次設置引腳的代碼:

I2C_Start();
  I2C_Write(0x40);   // slave address
  I2C_Write(0x00);  // address register
  ... (sequential mode so next 10 are set to I2C_Write(0x00);
  I2C_Write(0x08);  // IOCON: HAEN=1
  I2C_Write(0x08);  // IOCON: HAEN=1
  ... (sequential mode so next 6 are set to I2C_Write(0x00);
  I2C_Write(0xFEu);  // GPIOA
  I2C_Write(0x01u);  // GPIOB
  I2C_Stop();

之后,我希望能夠切換輸出值(0xFE <-> 0x01)。 我嘗試了這段代碼:

I2C_Start();
  I2C_Write(0x40);   // slave address
  I2C_Write(0x12);   // address register
  I2C_Write(0x01u);  // GPIOA
  I2C_Write(0xFEu);  // GPIOB
  I2C_Stop();

此時似乎要吃午飯了,引腳的值似乎是隨機的(輸入與輸出,輸出高與低)。 如果有人使用過此I2C IO擴展器,請幫助我。 即使您不能完全確定您也歡迎發表評論。 注意:此處顯示的I2C API是位沖擊算法,所有時鍾周期都帶有aprox。 它們之間的權重為1ms。

有用的文件(種類): http : //ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf

嘗試使用示波器或邏輯分析儀查看SCL和SDA信號,以檢查時序和數據,以確保向I / O擴展器發送了您認為的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM