日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mstar 平台I2C 配置

發(fā)布時間:2023/12/29 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mstar 平台I2C 配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

芯片的pin 腳可以用作不同的功能,總結一句就是外設進行狀態(tài)和數(shù)據(jù)交換。

  • 最常用的是作為GPIO,設置為輸出模式時,通過高低電平來控制一些外圍設置;
    // 如LED,屏的電源,背光的開關,功放的靜音等等。 除了控制設置之外,還需要和外部設置傳輸數(shù)據(jù)。
  • pin 作為GPIO 設置為IN時,是獲取外設的高低來判斷外設的狀態(tài),最常用的一些source 通道的detect,及一些wakeup 功能。
  • pin 作為SAR 口,獲取ADC值; // 如按鍵板,參照“mstar平臺SAR口使用”
  • pin 作為UART / SPI /SD 口;
  • pin 作為I2C 口;
  • 一般來說,大部分有特殊功能的Pin腳其實都可以作為GPIO使用,但是當我們將其配置成特殊功能后,就不能同時配為GPIO。
    所以當我們發(fā)現(xiàn)某個Pin腳我們想將其配成GPIO后,卻沒辦法改變它的高低狀態(tài)時,就要留意一下該Pin腳是否已經(jīng)被誤配為特殊功能了,這時就需要我們先DISABLE 掉這個特殊功能之后,才能設置成GPIO及其狀態(tài)設定。每個chip有對應一個init GPIO配置,BD_MST{$Board}.h, drvpadconf.c.

    標準GPIO口配置

    總共時鐘狀態(tài)

    #define GPIO_NONE 0 // Not GPIO pin (default) #define GPIO_IN 1 // GPI #define GPIO_OUT_LOW 2 // GPO output low #define GPIO_OUT_HIGH 3 // GPO output high

    特殊口配置

  • uart 口配置
  • 特殊功能的pin 需要在BD_MST{$Board}.h 中配置。

    #define DISABLE 0 #define ENABLE 1#define CONFIG_PADMUX_MODE0 0x00 #define CONFIG_PADMUX_MODE1 0x01 #define CONFIG_PADMUX_MODE2 0x02 #define CONFIG_PADMUX_MODE3 0x03 #define CONFIG_PADMUX_MODE4 0x04 #define CONFIG_PADMUX_MODE5 0x05 #define CONFIG_PADMUX_MODE6 0x06 #define CONFIG_PADMUX_MODE7 0x07 #define CONFIG_PADMUX_MODE8 0x08 #define CONFIG_PADMUX_MODE9 0x09 #define CONFIG_PADMUX_UNKNOWN 0xFF


    例如UART3,UART4 配置成了CONFIG_PADMUX_MODE1,其實也是ENABLE。接著在drvPadConf.c 文件中設置寄存器值。

    針對UART3,UART4 設置了寄存器0x1e05 的bit2,0x1e04的bit6 。這樣就配置完成了。

  • I2C 總線功能配置
  • 下面我們以I2C2 為例

    I2C 的clk,data 腳分別連接在AD16,AC16 兩個pin 上面。比較特殊的是這兩個pin 都是有復用功能的。所以我們需要disable掉其特殊功能LED/tcon。在BD_MST160D_AH_M7221.h中我們可以關閉LED功能

    #define PADS_LED_MODE DISABLE

    Tcon[11],Tcon[12], 未找到,屬于備用的暫不處理

    寄存器設置

    #ifdef PADS_LED_MODE#if (PADS_LED_MODE != CONFIG_PADMUX_UNKNOWN)#define _CONFIG_LED_MODE ((PADS_LED_MODE == ENABLE) ? BIT4 : 0)_RVM1(0x1eb4, _CONFIG_LED_MODE, BIT4),#if (PADS_LED_MODE == DISABLE)_MEMMAP_PM_,//reg_seperate_wol_led_is_gpio_RVM1(0x0e39, BIT7, BIT7),//reg_led_is_gpio_RVM1(0x0e39, 0, BIT0),_MEMMAP_nonPM_,#endif#endif #endif

    disable 掉特殊功能之后,開始配置I2C 功能

    //SWI2C #define PAD_DDCR_CK_IS_GPIO GPIO_IN //I2C-SCL (EEPROM) #define PAD_DDCR_DA_IS_GPIO GPIO_IN //I2CM-SDA (EEPROM)#define PAD_TGPIO0_IS_GPIO GPIO_IN //TUNER_SCL #define PAD_TGPIO1_IS_GPIO GPIO_IN //TUNER_SDA*#define PAD_GPIO19_IS_GPIO GPIO_IN //I2C2-SCL #define PAD_GPIO20_IS_GPIO GPIO_IN //I2C2-SDA*

    將GPIO19,GPIO20 配置成了GPIO_IN,接著進行寄存器配置。如下:

    #if(PAD_GPIO19_IS_GPIO != GPIO_NONE)#define PAD_GPIO19_OEN (PAD_GPIO19_IS_GPIO == GPIO_IN ? BIT1: 0)#define PAD_GPIO19_OUT (PAD_GPIO19_IS_GPIO == GPIO_OUT_HIGH ? BIT0: 0)_RVM1(0x2b08, PAD_GPIO19_OUT, BIT0),_RVM1(0x2b08, PAD_GPIO19_OEN, BIT1),//reg_tconconfig11_RVM1(0x1ea1, 0, BIT3), //reg[101ea1]#3 = 0b//reg_agc_dbg_RVM1(0x1e9e, 0, BIT7), //reg[101e9e]#7 = 0b//reg_led_mode_RVM1(0x1eb4, 0, BIT4), //reg[101eb4]#4 = 0b//reg_seconduartmode_RVM1(0x1e05, 0, BIT1 | BIT0), //reg[101e05]#1 ~ #0 = 00b//reg_od2nduart_RVM1(0x1ea9, 0, BIT1 | BIT0), //reg[101ea9]#1 ~ #0 = 00b//reg_miic_mode0_RVM1(0x1edc, 0, BIT0), //reg[101edc]#0 = 0b#endif#if(PAD_GPIO20_IS_GPIO != GPIO_NONE)#define PAD_GPIO20_OEN (PAD_GPIO20_IS_GPIO == GPIO_IN ? BIT1: 0)#define PAD_GPIO20_OUT (PAD_GPIO20_IS_GPIO == GPIO_OUT_HIGH ? BIT0: 0)_RVM1(0x2b09, PAD_GPIO20_OUT, BIT0),_RVM1(0x2b09, PAD_GPIO20_OEN, BIT1),//reg_tconconfig12_RVM1(0x1ea1, 0, BIT4), //reg[101ea1]#4 = 0b//reg_agc_dbg_RVM1(0x1e9e, 0, BIT7), //reg[101e9e]#7 = 0b//reg_led_mode_RVM1(0x1eb4, 0, BIT4), //reg[101eb4]#4 = 0b//reg_seconduartmode_RVM1(0x1e05, 0, BIT1 | BIT0), //reg[101e05]#1 ~ #0 = 00b//reg_od2nduart_RVM1(0x1ea9, 0, BIT1 | BIT0), //reg[101ea9]#1 ~ #0 = 00b//reg_vx1gpi_mode_RVM1(0x1e4a, 0, BIT1 | BIT0), //reg[101e4a]#1 ~ #0 = 00b//reg_miic_mode0_RVM1(0x1edc, 0, BIT0), //reg[101edc]#0 = 0b//reg_extint5_RVM1(0x1ea5, 0, BIT5), //reg[101ea5]#5 = 0b#endif

    其實配置成GPIO_IN 容易和 標準GPIO IN 模式產(chǎn)生誤解。應該區(qū)別一下定義成IIC_MODE等其他宏,然后drvpadconf.c 文件中,設置寄存器即可。寄存器值的設置才是pin 的功能設置的本質(zhì)。這樣就完成mboot里面pin的功能定義。

    使用的話,可以參考“Mstar平臺TCA9539 移植”

    總結

    以上是生活随笔為你收集整理的mstar 平台I2C 配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。