IPQ4028開啟I2C功能


0 概述

  IPQ4028是一款集約式4核心ARM7 SOC芯片,內嵌獨立雙頻WiFi子系統,offload式,支持MU-MIMO,最高支持1.2Gbps。標准的官方Demo方案中,IPQ4019開啟了I2C功能,但IPQ4028/4018等未啟用。

2 啟用方法

  qcom-ipq40xx.dtsi文件中定義了2個I2C接口:i2c0和i2c1,所以我們無需更改此文件,僅需要更改子板的dtsi文件即可。

  1 修改dtsi文件

  在qcom-ipq40xx-ap.dk01.1.dtsi中(IPQ4028子方案用這份dtsi),在@soc域,基於“wps_pins”定義,增加一份“i2c_0_pins”定義,基於datasheet文檔,其pins需要固定為"gpio58"和"gpio59"(建議硬件不要改這2個gpio,否則要改動N多地方,且不一定能成功);function固定為“blsp_i2c0”。

      再參考qcom-ipq40xx-ap.dk04.1.dtsi中的“i2c_0: i2c@78b7000”定義,將此段的內容全拷貝到qcom-ipq40xx-ap.dk01.1.dtsi中“usb2: usb2@6000000”定義的下邊,然后s刪除“i2c_0”中具體從設備定義。如果是復雜的I2C從設備,則這里要添加與你的目標從設備相匹配的定義。

  2 開啟驅動

  make menuconfig ->"Kernel modules"->"I2C support",將“kmod-i2c-core”,“kmod-i2c-algo-bit”,“kmod-i2c-gpio”和“kmod-i2c-gpio-custom”選中進內核;

  make kernel_menuconfig->"Device Drivers"->"I2C support"->"I2C Hardware Bus support"鏈中,"I2C support"和"I2C_MSM_V2"選中進內核。

      3 測試代碼

        到http://blog.csdn.net/zjy900507/article/details/78838404拷貝此熱心人士的I2C測試代碼,利用現有的交叉編譯工具鏈,獨立編譯為i2ctest即可,該i2ctest可直接在IPQ4028硬件平台上運行。

3 硬件修改

  將IPQ4028的gpio58,59割出或引出來后,可以直接飛線到I2C從設備Demo板的SCL和SDA上,利用i2ctest程序直接進行控制;如果是從設備已直接貼到AP的PCBA上,則需要確認從設備IC的SCL和SDA引腳已被同一個電源線拉高(從事射頻開發硬件工程師不一定會關注這些細節,所以一定要自己檢測是否拉高到3.3V-5.0V間;同時,建議I2C從設備的VCC引腳不要與SCL/SDA共用同一條電源線,也不要將SCL和SDA分布在2條電源線上。后者也許是個案問題,我這邊調試的時候,硬件工程師開始的時候將SCL腳拉高到VCC腳,SDA腳拉高到另一個電源線,死活不通;后來更換了一塊板子,將SCL/SDA拉高到同一個電源線,且與VCC腳分開,就一切都正常了。可能硬件工程師有不同的理解,在用模擬器控制從設備Demo板成功,但卻始終控制不了同一PCBA上的從設備時,可以找另一個硬件工程師,讓他按本文建議,重新飛下線,肯定是個不錯的調試方法)。

4 配套測試工具

  到X寶上買一個USB式的邏輯分析儀,大概百元以內即可。因為示波器你只能看到大概波形,而邏輯分析儀可以更直觀,特別是它具有I2C控制器功能,可以直接控制從設備,可以對抓到的信號進行I2C解碼,非常好用。也許你的從設備供應商會不斷強調示波器的好處,你只要能抓到正確的波形,就是用一個百元以內的軟示波器就足夠了。

5 驗證

  在固件編譯完后,燒錄到硬件平台上,可以看到/dev/i2c-0,則表明固件是正常的;然后上載i2ctest工具到設備上,試着寫從設備的寄存器、讀從設備的寄存器,如果邏輯儀上顯示波形正確,則一切正常;將所有控制寄存器都寫完,就可以看到從設備的正常反應了;反之,如果AP設備的串口出現NACK或ERROR字樣,則表明I2C總線、從設備或I2c與從設備間通信出了問題。

  一旦出現問題,建議用邏輯分析儀所自帶的I2C控制器對從設備直接控制,確認從設備沒有問題后再通過i2ctest進行聯合調試。最常見的問題是:

1)從設備損壞;2)未正常上拉;3)VCC電壓異常波動;4)從設備地址錯誤。

  這里要強調一下,抓包i2c-msm-v2驅動時,會發現從設備的地址比datasheet所述左移了1bit,這個是正常的。如果你將從設備地址右移1bit以便這里的打印地址與datasheet的保持一致,那么就肯定會得到NACK提示。

6 其它

  我已經在此硬件平台上利用ET6326 IC成功調出了3色呼吸燈。呼吸燈效果雖然你可以用GPIO-PWM式調出,但增加一個專門的IC來負責LED,可以做出更穩定、且不耗費主機性能。同時,基於此I2C總線,我們可以增加溫感、濕感以及PM2.5傳感器,從而擴展WiFi 設備的功能。

  感謝ET6236供應商、研發廠家的大力協助。若您需要用到呼吸燈效果,建議采用ET6236或該公司的其它IC,主要是技術支持非常好。

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM