一、I2C配置
1.根據原理圖,查找相關的i2c引腳對應的GPIO值,以GPIO10作為I2C_SDA,GPIO11作為I2C_SCL為例。
2.根據MSM8937 DEVICE SPECIFICATION文檔,查找GPIO10與GPIO11對應的BLSP,以及檢查GPIO10與GPIO11是否可以作為I2C來使用。根據文檔,GPIO10對應BLSP3_1,GPIO11對應BLSP3_0。
3.根據80-nu767-1_h_linux_bam_low-speed_peripherals_configuration_and_debug_guide文件,查找I2C部分BLSP3_0與BLSP3_1對應內容,包括其物理地址、reg size、中斷號......
4.進入kernel/msm-3.18/arch/arm/boot/dts/qcom/路徑下修改msm8937-pinctrl.dtsi文件
GPIO配置如下:
i2c_3 {
i2c_3_active: i2c_3_active {
/* active state */
mux {
pins = "gpio10", "gpio11";
function = "blsp_i2c3";
};
config {
pins = "gpio10", "gpio11";
drive-strength = <2>;
bias-disable;
};
};
i2c_3_sleep: i2c_3_sleep {
/* suspended state */
mux {
pins = "gpio10", "gpio11";
function = "gpio";
};
config {
pins = "gpio10", "gpio11";
drive-strength = <2>;
bias-disable;
};
};
};
5.進入kernel/msm-3.18/arch/arm/boot/dts/qcom/路徑下修改msm8937.dtsi文件
添加一個新的設備樹節點
(1)添加i2c_3
aliases {
smd1 = &smdtty_apps_fm;
smd2 = &smdtty_apps_riva_bt_acl;
smd3 = &smdtty_apps_riva_bt_cmd;
smd4 = &smdtty_mbalbridge;
smd5 = &smdtty_apps_riva_ant_cmd;
smd6 = &smdtty_apps_riva_ant_data;
smd7 = &smdtty_data1;
smd8 = &smdtty_data4;
smd11 = &smdtty_data11;
smd21 = &smdtty_data21;
smd36 = &smdtty_loopback;
spi3 = &spi_3;
i2c2 = &i2c_2;
i2c5 = &i2c_5;
i2c3 = &i2c_3;
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
sdhc2 = &sdhc_2; /* SDC2 for SD card */
};
(2)配置i2c_3
i2c_3: i2c@78b7000 { /* BLSP1 QUP3 */
compatible = "qcom,i2c-msm-v2";
#address-cells = <1>;
#size-cells = <0>;
reg-names = "qup_phys_addr";
reg = <0x78b7000 0x600>;
interrupt-names = "qup_irq";
interrupts = <0 97 0>;
qcom,clk-freq-out = <400000>;
qcom,clk-freq-in = <19200000>;
clock-names = "iface_clk", "core_clk";
clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
<&clock_gcc clk_gcc_blsp1_qup3_i2c_apps_clk>;
pinctrl-names = "i2c_active", "i2c_sleep";
pinctrl-0 = <&i2c_3_active>;
pinctrl-1 = <&i2c_3_sleep>;
qcom,noise-rjct-scl = <0>;
qcom,noise-rjct-sda = <0>;
qcom,master-id = <86>;
dmas = <&dma_blsp1 8 64 0x20000020 0x20>,
<&dma_blsp1 9 32 0x20000020 0x20>;
dma-names = "tx", "rx";
status = "okey";
};
6.進入kernel/msm-3.18/drivers/clk/msm路徑下修改clock-gcc-8952.c文件
添加時鐘節點如下圖所示:
static struct rcg_clk blsp1_qup1_i2c_apps_clk_src = {
.cmd_rcgr_reg = BLSP1_QUP1_I2C_APPS_CMD_RCGR,
.set_rate = set_rate_hid,
.freq_tbl = ftbl_gcc_blsp1_2_qup1_4_i2c_apps_clk,
.current_freq = &rcg_dummy_freq,
.base = &virt_bases[GCC_BASE],
.c = {
.dbg_name = "blsp1_qup1_i2c_apps_clk_src",
.ops = &clk_ops_rcg,
VDD_DIG_FMAX_MAP1(LOWER, 50000000),
CLK_INIT(blsp1_qup1_i2c_apps_clk_src.c),
},
};
二、I2C BUS驗證
配置好I2C后,我們需保證I2C BUS被注冊
驗證過程如下:
adb shell //-------> Get adb shell
cd /dev/
ls i2c* //--------> to list all the i2c buses
如果顯示i2c-3,則表示I2C BUS已被注冊
三、I2C調試檢查
1、檢查I2C配置的相關內容,是否存在錯誤,或者漏配。
2、確保SDA和SCL所配置的GPIO沒有被配置,否則會硬件配置出問題或者GPIO設置無效。
3、若I2C配置無誤后,檢查相關硬件問題
使用萬用表測量I2C_SDA以及I2C_SCL的供電電壓,如果與原理圖中所示供電電壓相差無幾,則表示I2C供電電壓沒有問題。反之,則代表供電電壓存在問題。
4、添加從設備
(1)、 通過設備樹來注冊一個從設備
如果I2C總線正常工作,我們就可以創建一個從設備驅動程序并注冊到i2c總線上
我們使用st1663i觸摸屏的驅動注冊作為范例,引用文件:
kernel/drivers/input/touchscreen/st1663i/sitronix_i2c_touch.c.c
(2)、創建一個設備樹節點
文件修改:
/kernel/arch/arm/boot/dts/qcom/msm8917-pmi8937-qrd-sku5.dtsi
添加一個新的設備樹節點:
i2c@78b7000 {
status = "ok";
st1663i@70 {
compatible = "sitronix-tp";
reg = <0x70>;
interrupt-parent = <&tlmm>;
interrupts = <65 0x00>;
reset-gpio = <&tlmm 64 0x00>;
irq-gpio = <&tlmm 65 0x2002>;
/*avdd-supply = <&tp_power>;*/
vdd-supply = <&pm8917_l17>;
vcc_i2c-supply = <&pm8917_l5>;
/* pins used by touchscreen */
pinctrl-names = "pmx_ts_active",
"pmx_ts_suspend",
"pmx_ts_release";
pinctrl-0 = <&ts_int_active &ts_reset_active>;
pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
pinctrl-2 = <&ts_release>;
st1663i,i2c-pull-up;
st1663i,no-force-update;
st1663i,num_max_touches = <10>;
st1663i,panel-coords = <0 0 480 800>;
st1663i,display-coords = <0 0 480 800>;
st1663i,button-map= <139 172 158>;
st1663i,have-touch-key;
st1663i,driver-send-cfg;
};
};
(3)、編譯完成后,利用示波器測量I2C_SDA以及I2C_SCL波形
測試流程如下
adb root
adb remount
adb push i2c_test system/bin
adb shell
cd system/bin
chmod 777 i2c_test
./i2c_test /dev/i2c-3 0xaddr(從設備物理地址) 0(讀) 0xaddr(寄存器地址)
如果I2C沒有問題,所示I2C_SDA波形應為以下形式
I2C start > 0xE0 (write of 0x70) > 0x1 (reg offset ) > I2C stop > delay > I2C start > 0xE1 (read of 0x70) > > 8 bytes > I2C stop
上一篇:命令行讀寫i2c寄存器操作
下一篇:ST-LINK/V2 + STM8 + STVP 下載程序+Error on Option Bytes
推薦閱讀
史海拾趣
Holtek(合泰)公司電子行業的五個發展故事
故事一:初創與臺灣半導體產業的崛起
1983年,合德集成電路的成立標志著Holtek(合泰)的前身正式踏入半導體行業,為臺灣半導體產業開啟了新篇章。隨著技術的不斷積累和市場需求的增長,1988年,合泰半導體在新竹科學園區的建立,成為公司在晶圓制造領域的重要里程碑。這一時期,合泰半導體專注于技術創新與品質提升,逐步在競爭激烈的半導體市場中站穩腳跟,為后續的快速發展奠定了堅實基礎。
故事二:晶圓制造與全球市場的拓展
進入90年代,合泰半導體迎來了快速發展期。1990年,五英寸VLSI晶圓廠的完工并開始生產,標志著公司在晶圓制造方面邁出了堅實的一步。隨著生產能力的提升,合泰半導體開始積極拓展全球市場。2000年,公司股票公開發行,并通過國際ISO9001質量系統認證,進一步鞏固了其在行業內的地位。同年,香港分公司的成立,以及隨后在美國和上海設立的子公司,使得合泰半導體的業務版圖迅速擴展至全球,加強了其在北美和大陸地區的銷售與技術服務能力。
故事三:技術創新與產品研發
合泰半導體始終將技術創新視為企業發展的核心動力。進入21世紀后,公司不斷推出具有競爭力的新產品,以滿足市場的多樣化需求。例如,在MCU(微控制器)領域,合泰半導體憑借其在低功耗、高性能方面的技術優勢,成功開發出多款適用于觸控、健康量測、工業控制等多個領域的MCU產品。這些產品的推出不僅豐富了公司的產品線,也進一步提升了公司在全球市場的競爭力。
故事四:物聯網市場的布局與深耕
隨著物聯網市場的興起,合泰半導體敏銳地捕捉到了這一新興市場的巨大潛力。公司開始積極布局物聯網領域,致力于為客戶提供從硬件到軟件、從芯片到解決方案的一站式服務。在智能家居、健康醫療、智慧城市等物聯網應用場景中,合泰半導體憑借其專業的MCU產品和強大的技術服務能力,贏得了眾多客戶的信賴與合作。通過不斷的技術創新和產品優化,合泰半導體在物聯網市場中占據了重要地位。
故事五:人才培養與校企合作
人才是企業發展的根本。合泰半導體深知這一點,因此一直將人才培養視為企業發展的重要戰略之一。公司不僅為員工提供豐富的在職培訓計劃和職涯提升管道,還積極與高校開展校企合作,共同培養具有創新精神和實踐能力的專業人才。例如,與某高校共建單片機應用開發聯合實驗室,不僅為學生提供了實踐鍛煉的平臺,也為企業輸送了大量優秀人才。這種校企合作模式不僅促進了企業的技術創新和產品研發,也為行業培養了大量高素質的專業人才。
在追求商業成功的同時,Codeco也積極履行企業社會責任。他們注重環保和可持續發展,在生產過程中采用環保材料和技術,減少對環境的影響。此外,Codeco還積極參與公益事業,為社會做出貢獻。這些舉措不僅提升了公司的社會形象,也贏得了員工和消費者的尊重與認可。
您可以根據這個框架,結合您對電子行業和Codeco Corporation Of Vermont的了解,撰寫具體的故事內容。請注意,這些故事應基于事實或合理的推測,避免涉及未經證實的信息或夸大其詞的描述。
為了進一步提升競爭力,DESCO公司進行了多次收購和資源整合。例如,在XX年,公司成功收購了美國一家知名的防靜電產品制造商,獲得了其先進的生產技術和銷售渠道。這次收購使DESCO公司的產品線更加豐富,市場覆蓋面更加廣泛。此外,公司還加強了與其他企業的戰略合作,共同開發新產品、拓展新市場。
面對日益嚴重的環境問題,Automatic Connector公司積極響應綠色制造的號召。公司投入大量資金研發環保型電子連接器,采用環保材料和節能工藝,減少生產過程中的污染排放。同時,公司還倡導循環經濟的理念,推動廢棄電子產品的回收和再利用。這一舉措不僅提升了公司的社會形象,也為公司的可持續發展奠定了堅實的基礎。
BERNSTEIN公司的歷史可以追溯到Weimar時期,當時Bernstein兄弟在萊比錫創立了“Monopol”公司,專注于為電氣建筑服務控制系統生產和制造低壓產品。初創時期,公司面臨著資金短缺、市場競爭激烈等諸多困難。然而,Bernstein兄弟憑借對技術的執著追求和對市場的敏銳洞察,成功研發出了一系列具有競爭力的產品,并逐漸在市場上站穩腳跟。
隨著全球環保意識的提高,ETAL也積極響應號召,將綠色環保理念融入到生產和經營中。公司采用了環保材料和清潔能源,減少了對環境的污染。同時,ETAL還注重節能減排和資源循環利用,努力降低生產成本和提高資源利用效率。這些措施不僅有助于保護環境,還為公司帶來了長期的經濟效益。
·ECD Ovonics公司氫燃料儲藏技術 ·本田汽車公司推出Super-Handling四輪驅動系統 ·Westport公司為寶馬汽車公司的氫氣燃料發動機開發計劃提供燃料噴射系統 ·豐田汽車公司開發低速范圍內雷達巡航控制技術 … 查看全部問答∨ |
|
現在用directdraw overlay層, 希望能對觸摸屏的輸入有反應,但沒找到directinput相關的文檔. 我用的是wince 5.0… 查看全部問答∨ |
|
兩段代碼 loop ............ SUBS R0, R0, #1 BEQ finish BNE loop 和 loop ................. & ...… 查看全部問答∨ |
有類似于SqlServerCEClient.dll的對應oracle的庫嗎? 急!!! [開發平臺] 有類似于SqlServerCEClient.dll的對應oracle的庫嗎? 急!!! [開發平臺] … 查看全部問答∨ |
本人目前正在上大三,專業是電子技術。 在為未來的工作擔心,看到別的系都有考這個考那個證書的。 現在有點兒迷茫了,咱們這個專業有什么證書好呢?像咱電子技術專業的人,要得到社會的承認,找到個不錯的工作,應該如何得到社會 ...… 查看全部問答∨ |
|
溫州環科電子信息科技有限公司誠聘以下崗位:崗位名稱:LED技術總監崗位職責要求:1、根據公司發展戰略組織策劃研發工作規劃,并使公司技術、研發目標達成。 2、[一燈]LED照明新技術引進和新產品項目開發管理,確保技術的前瞻性和領先性,確保項目 ...… 查看全部問答∨ |
電機控制 - TI電機驅動和控制解決方案:集成電機驅動器和閘極驅動器 本帖最后由 dontium 于 2015-1-23 13:10 編輯 TI電機驅動和控制解決方案:集成電機驅動器和閘極驅動器 DRV8x 電機驅動器 集成電機驅動器在單個 IC 中集成閘極驅動器、MOSFETS 和保護電路,以最小的成本和物理尺寸提供 ...… 查看全部問答∨ |