色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

mmWave SDK demo中集成I2C接口驅動所需的步驟及操作

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-01-14 10:07 ? 次閱讀

作者: TI 工程師 Wesley He

在一些特殊的使用場合,有需要使用AWR1642對PMIC的輸出電壓進行調節(jié),或是讀取PMIC 內部的工作狀態(tài),此時需要I2C接口對PMIC進行讀寫操作,本文介紹了在現(xiàn)有的mmWave SDK demo中集成I2C接口驅動所需的步驟及操作。

本文的測試環(huán)境如下:

測試軟件版本:mmWave SDK 2.0.0.4

測試硬件:AWR1642BOOST EVM

1. 在mmWave SDK demo中增加I2C驅動代碼

第一步是添加代碼以包含和初始化I2C驅動程序。從I2C接口發(fā)送和接收均需要此驅動程序的支持,以下是在mss_main.c中添加的初始化I2C驅動程序的C代碼。此測試代碼可以復制到現(xiàn)有工程中。I2C驅動操作步驟為:GPIO初始化,I2C驅動初始化,配置I2C改寫PMIC(LP87524B)寄存器以實現(xiàn)PMIC輸出電壓調節(jié)。

注意LP87524B寄存器信息來源于其datasheet:LP87524B/J-Q1具有集成開關的具有集成開關的 4-A + 2.5-A +兩個 1.5-A降壓穩(wěn)壓器數(shù)據(jù)表 (Rev. A),I2C驅動參考代碼如下:

#include

static int32_t I2C_GPIOInit(void)

{

#if (defined(SOC_XWR14XX))

/* Setup the PINMUX to bring out the XWR14xx I2C pins */

Pinmux_Set_OverrideCtrl(SOC_XWR14XX_PINR3_PADAH, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);

Pinmux_Set_FuncSel(SOC_XWR14XX_PINR3_PADAH, SOC_XWR14XX_PINR3_PADAH_I2C_SDA);

Pinmux_Set_OverrideCtrl(SOC_XWR14XX_PINP4_PADAI, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);

Pinmux_Set_FuncSel(SOC_XWR14XX_PINP4_PADAI, SOC_XWR14XX_PINP4_PADAI_I2C_SCL);

#else

/* Setup the PINMUX to bring out the XWR16xx I2C pins */

Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PINF13_PADAH, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);

Pinmux_Set_FuncSel(SOC_XWR16XX_PINF13_PADAH, SOC_XWR16XX_PINF13_PADAH_I2C_SDA);

Pinmux_Set_OverrideCtrl(SOC_XWR16XX_PING14_PADAI, PINMUX_OUTEN_RETAIN_HW_CTRL, PINMUX_INPEN_RETAIN_HW_CTRL);

Pinmux_Set_FuncSel(SOC_XWR16XX_PING14_PADAI, SOC_XWR16XX_PING14_PADAI_I2C_SCL);

#endif

return 0;

}

static int32_t I2C_Communication_Test()

{

bool retVal = false;

int32_t errCode = 0;

uint32_t arg;

uint8_t rxData[16];

uint8_t txData[16];

I2C_Transaction i2cTransaction;

I2C_Handle i2cHandle;

I2C_Params i2cParams;

/* Reset the transmit and receive buffer */

memset(&rxData, 0, sizeof (rxData));

/* Initializa the I2C driver */

I2C_init();

/* Initialize the I2C driver default parameters */

I2C_Params_init(&i2cParams);

i2cParams.transferMode = I2C_MODE_BLOCKING;

i2cParams.bitRate = I2C_100kHz;

/* Open the I2C driver */

i2cHandle = I2C_open(0, &i2cParams);

if (i2cHandle == NULL)

{

System_printf ("Error: I2C Driver Open failed\n");

return -1;

}

/* Configure the I2C device in I2C_CMD_ADDR_MODE mode */

arg = 0;//arg set to 0, and the I2C addr mode is 7-bit.

errCode = I2C_control (i2cHandle, I2C_CMD_ADDR_MODE, (void* )&arg);

if (errCode < 0)

{

System_printf ("Error: I2C control Set I2C_CMD_ADDR_MODE failed [Error code %d]\n", errCode);

return -1;

}

//read the LP87524B buck3 output voltage register

txData[0] = 0x10;

i2cTransaction.slaveAddress = 0x60;//LP87524B/J-Q1 Device Address = 0x60

i2cTransaction.writeBuf = txData;

i2cTransaction.writeCount = 1;

i2cTransaction.readBuf = rxData;

i2cTransaction.readCount = 1;

retVal = I2C_transfer(i2cHandle, &i2cTransaction);

if (retVal == false)

{

System_printf ("Error: I2C Transfer failed\n");

return -1;

}

System_printf("I2C_READ: addr=0x%x, Val=0x%x\n",txData[0],rxData[0]);

//write the LP87524B buck3 output voltage = 2.0V

txData[0] = 0x10;

txData[1] = 0xbb;//default=0xca,2.3V,0xb1=1.8V, 0xbb=2.0V

i2cTransaction.slaveAddress = 0x60;//LP87524B/J-Q1 Device Address = 0x60

i2cTransaction.writeBuf = txData;

i2cTransaction.writeCount = 2;

i2cTransaction.readBuf = rxData;

i2cTransaction.readCount = 0;

retVal = I2C_transfer(i2cHandle, &i2cTransaction);

if (retVal == false)

{

System_printf ("Error: I2C Transfer failed\n");

return -1;

}

System_printf("I2C_Write: LP87524B buck3 = 2.0V Done\n");

//read the LP87524B buck3 output voltage register

txData[0] = 0x10;

i2cTransaction.slaveAddress = 0x60;//LP87524B/J-Q1 Device Address = 0x60

i2cTransaction.writeBuf = txData;

i2cTransaction.writeCount = 1;

i2cTransaction.readBuf = rxData;

i2cTransaction.readCount = 1;

retVal = I2C_transfer(i2cHandle, &i2cTransaction);

if (retVal == false)

{

System_printf ("Error: I2C Transfer failed\n");

return -1;

}

System_printf("I2C_READ: addr=0x%x, Val=0x%x\r\n",txData[0],rxData[0]);

//write the LP87524B buck2 output voltage = 1.5V

txData[0] = 0x0e;

txData[1] = 0Xa2;//default=0xb1,1.8V, 0x4d=1V 0xa2=1.5V

i2cTransaction.slaveAddress = 0x60;//LP87524B/J-Q1 Device Address = 0x60

i2cTransaction.writeBuf = txData;

i2cTransaction.writeCount = 2;

i2cTransaction.readBuf = rxData;

i2cTransaction.readCount = 0;

retVal = I2C_transfer(i2cHandle, &i2cTransaction);

if (retVal == false)

{

System_printf ("Error: I2C Transfer failed\n");

return -1;

}

System_printf("I2C_Write: LP87524B buck2 = 1.5V Done\n");

if (retVal == false)

{

System_printf ("Error: I2C combined Transfer to Slave failed\n");

return -1;

}

/* Close I2C driver */

I2C_close(i2cHandle);

return 0;

}

//Call these function in void MmwDemo_mssInitTask(UArg arg0, UArg arg1)

errCode = I2C_GPIOInit();

if (errCode == -1)

System_printf("I2C_GPIOInit Error\r\n");

errCode = I2C_Communication_Test();

if (errCode == -1)

System_printf("I2C_Communication_Test Error\n");

else

System_printf("I2C_Communication_Test Done\n");

2. 將工程鏈接到I2C驅動庫

最后一步是通過鏈接I2C驅動程序來構建可執(zhí)行文件。 如果使用CCS項目,可以將I2C驅動程序添加到項目的鏈接器屬性中,如圖1所示。

pYYBAGGKVg2ALnqyAADCaMnHFx0296.png

圖1. CCS Project Linker Properties

如果使用makefile編譯工程,執(zhí)行相同的程序。

###################################################################################

# Additional libraries which are required to build the DEMO:

###################################################################################

MSS_MMW_DEMO_STD_LIBS = $(R4F_COMMON_STD_LIB) \

-llibpinmux_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibdma_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibcrc_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibuart_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibgpio_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibmailbox_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibmmwavelink_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibmmwave_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibcli_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT) \

-llibi2c_$(MMWAVE_SDK_DEVICE_TYPE).$(R4F_LIB_EXT)

MSS_MMW_DEMO_LOC_LIBS = $(R4F_COMMON_LOC_LIB) \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/drivers/pinmux/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/drivers/uart/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/drivers/dma/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/drivers/crc/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/drivers/gpio/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/drivers/mailbox/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/control/mmwavelink/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/control/mmwave/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/utils/cli/lib \

-i$(MMWAVE_SDK_INSTALL_PATH)/ti/utils/i2c/lib

3. 運行測試例程

運行測試程序后,CCS控制臺輸出打印信息如下,使用萬用表測量LP87524輸出電壓即為設置的電壓,I2C驅動添加成功。

**********************************************

Debug: Launching the Millimeter Wave Demo

**********************************************

I2C_READ: addr=0x10, Val=0xca

I2C_Write: LP87524B buck3 = 2.0V Done

I2C_READ: addr=0x10, Val=0xbb

I2C_Write: LP87524B buck2 = 1.5V Done

I2C_Communication_Test Done

審核編輯:何安

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 驅動
    +關注

    關注

    12

    文章

    1839

    瀏覽量

    85263
  • 嵌入式處理
    +關注

    關注

    0

    文章

    341

    瀏覽量

    10012
收藏 人收藏

    評論

    相關推薦

    BTB擴展接口:LCD、Camera、UART、I2C等|詳解篇

    今天我們來學習的是BTB擴展接口的LCD、Camera、UART、I2C詳解,特別分享Air201硬件BTB擴展接口相關內容。
    的頭像 發(fā)表于 11-30 09:39 ?295次閱讀
    BTB擴展<b class='flag-5'>接口</b>:LCD、Camera、UART、<b class='flag-5'>I2C</b>等|詳解篇

    RISC V的I2C操作

    :RISC V的I2C操作 文章出處:【微信公眾號:易靈思FPGA技術交流】歡迎添加關注!文章轉載請注明出處。
    的頭像 發(fā)表于 11-01 11:06 ?197次閱讀

    使用TAS5805 DEMO板PPC3 I2C monitor進行I2C命令調試,讀寫命令總是錯誤,為什么?

    使用TAS5805 DEMO板,試用 PPC3 I2C monitor 進行I2C命令調試,讀寫命令總是錯誤,示波器檢查波形發(fā)現(xiàn)device address 左移了一位,相當于除2
    發(fā)表于 10-12 06:47

    在低成本MSP430 MCU中集成I2C I/O擴展器

    電子發(fā)燒友網(wǎng)站提供《在低成本MSP430 MCU中集成I2C I/O擴展器.pdf》資料免費下載
    發(fā)表于 09-24 10:56 ?0次下載
    在低成本MSP430 MCU<b class='flag-5'>中集成</b><b class='flag-5'>I2C</b> <b class='flag-5'>I</b>/O擴展器

    mmWave SDK增加QSPI Flash驅動的示例

    電子發(fā)燒友網(wǎng)站提供《在mmWave SDK增加QSPI Flash驅動的示例.pdf》資料免費下載
    發(fā)表于 09-11 14:20 ?0次下載
    在<b class='flag-5'>mmWave</b> <b class='flag-5'>SDK</b>增加QSPI Flash<b class='flag-5'>驅動</b>的示例

    I2C基本指南

    電子發(fā)燒友網(wǎng)站提供《I2C基本指南.pdf》資料免費下載
    發(fā)表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本指南

    I2C接口+高度集成的電源管理芯片PMIC-iML1942

    電源管理芯片 - iML1942是一個高度集成的電源管理IC為TFT液晶面板。它具有完整的I2C接口來編程各種參數(shù)。
    的頭像 發(fā)表于 07-05 09:27 ?657次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>接口</b>+高度<b class='flag-5'>集成</b>的電源管理芯片PMIC-iML1942

    如何通過cyusb3014的i2c操作界面操作ads1119的i2c接口

    我使用 cyusb3014 作為 i2c 設備的主機,并使用 ads1119 采集電壓。 我需要使用 i2c 操作相關指令。 例子中提供的示例只顯示了讀寫步驟,即 dev_ Addr+
    發(fā)表于 05-23 07:30

    I2C接口的8位LED驅動器TPIC2810數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《帶I2C接口的8位LED驅動器TPIC2810數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 04-09 15:41 ?0次下載
    帶<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>的8位LED<b class='flag-5'>驅動</b>器TPIC2810數(shù)據(jù)表

    什么是I2C協(xié)議 I2C總線的控制邏輯

    在實際使用過程中,I2C比較容易出現(xiàn)的一個問題就是死鎖 ,死鎖在I2C中主要表現(xiàn)為:I2C死鎖時表現(xiàn)為SCL為高,SDA一直為低。
    發(fā)表于 03-12 09:17 ?1056次閱讀
    什么是<b class='flag-5'>I2C</b>協(xié)議 <b class='flag-5'>I2C</b>總線的控制邏輯

    i2c接口由哪幾根線組成 i2c接口可以接哪些器件

    I2C接口的線路可以適應不同的系統(tǒng)需求和器件規(guī)格,因此具體的線路配置可能會有所不同。但通常來說,時鐘線(SCL)和數(shù)據(jù)線(SDA)是I2C接口的核心線路。
    的頭像 發(fā)表于 03-05 16:55 ?3763次閱讀
    <b class='flag-5'>i2c</b><b class='flag-5'>接口</b>由哪幾根線組成 <b class='flag-5'>i2c</b><b class='flag-5'>接口</b>可以接哪些器件

    GD32 MCU硬件I2C不可靠不如軟件I2C?來看看紅楓派開發(fā)版的硬件I2C驅動如何做到穩(wěn)得一批

    在一個評論中,看到網(wǎng)友對硬件I2C的討論,硬件I2C Busy找不到原因、軟件I2C穩(wěn)得一批。
    的頭像 發(fā)表于 02-23 09:37 ?2781次閱讀
    GD32 MCU硬件<b class='flag-5'>I2C</b>不可靠不如軟件<b class='flag-5'>I2C</b>?來看看紅楓派開發(fā)版的硬件<b class='flag-5'>I2C</b><b class='flag-5'>驅動</b>如何做到穩(wěn)得一批

    什么是I2C接口?什么是I3C接口I2CI3C的區(qū)別

    I2C接口是一種串行通信協(xié)議,全稱為Inter-Integrated Circuit,即集成電路間總線。它是一種雙向、兩線制(SCL和SDA)的串行通信接口,主要用于連接微控制器和其他
    的頭像 發(fā)表于 02-17 14:39 ?6264次閱讀
    什么是<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>?什么是<b class='flag-5'>I3C</b><b class='flag-5'>接口</b>?<b class='flag-5'>I2C</b>與<b class='flag-5'>I3C</b>的區(qū)別

    XV4001BC車載用SPI/I2C輸出接口的數(shù)字輸出

    XV4001BC車載用SPI/I2C輸出接口的數(shù)字輸出,可實現(xiàn)角速度輸出和溫度傳感器輸出,滿足汽車導航和通訊系統(tǒng)的要求。SPI / I2C 輸出接口角速度輸出(16bit)、溫度傳感
    發(fā)表于 01-02 16:33 ?0次下載

    i2c接口和spi接口區(qū)別

    I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)都是用于設備間通信的串行接口標準。它們在很多方面有著相似之處,但也有一些
    的頭像 發(fā)表于 12-25 15:02 ?3998次閱讀
    主站蜘蛛池模板: 亚洲成A人片在线观看中文不卡 | 丝瓜视频在线免费| 亚洲爱视频| 中文字幕无线观看不卡网站| 成年人视频在线免费播放| 国产在线播放KKK| 女教师杨雪的性荡生活| 十分钟免费看完整视频 | 亚洲精品乱码8久久久久久日本 | 国产成人理在线观看视频| 精品久久久久亚洲| 日本久久黄色| 在线欧美 精品 第1页| 国产69精品久久久久麻豆| 久久国产精品自线拍免费| 日韩内射美女人妻一区二区三区| 亚洲视频在线看| 成年人在线免费观看视频网站| 精品三级久久久久电影网1| 热久久免费频精品99热| 一本道本线中文无码| 成人影院久久久久久影院| 久久久久国产| 四虎影院2022| 99国产精品欲AV蜜桃臀麻豆| 国产真实露脸乱子伦| 日本69xxxxx| 777EY_卡通动漫_1页| 国产美女裸身网站免费观看视频| 嫩草影院在线观看精品视频| 亚洲视频无码高清在线| 疯狂小护士| 美女的避毛| 亚洲视频成人| 国产人妻人伦精品1国产| 欧美午夜不卡在线观看| 中文无码熟妇人妻AV在线| 国产亚洲精品久久久久久禁果TV| 日本漫画母亲口工子全彩| 中文字幕在线观看国产| 国语自产偷成人精品视频|