亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文詳解CKS32K148微控制器的LPI2C模塊

中科芯MCU ? 來(lái)源:中科芯MCU ? 2025-07-16 14:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MCU微課堂

CKS32K148 LPI2C

第六十期 2025.07.14

LPI2C(Low Power Inter-Integrated Circuit)是CKS32K148微控制器中的一個(gè)低功耗I2C接口模塊。CKS32K148款MCU存在LPI2C0、LPI2C1兩個(gè)LPI2C,支持標(biāo)準(zhǔn)模式(100 kbps)、快速模式(400 kbps)、快速+模式(1Mbps)和高速模式(3.4 Mbps)通信速率。

主要特性

兼容性:支持 I2C 總線標(biāo)準(zhǔn)模式、快速模式、快速+模式、從機(jī)模式下的高速模式 (HS)。

低功耗:支持低功耗模式。

多主模式:支持多主操作,包括同步和仲裁機(jī)制。

中斷和 DMA 支持:提供中斷和 DMA 支持,減少 CPU 負(fù)載。

可配置性:可配置廣播呼叫、7 位或 10 位地址模式??蛇x擇SOSC、SIRC、FIRC、SPLL時(shí)鐘源,支持時(shí)鐘延長(zhǎng)、時(shí)序可通過(guò)寄存器靈活配置。

錯(cuò)誤檢測(cè):支持總線忙檢測(cè)、仲裁丟失、FIFO錯(cuò)誤、端口低電平超時(shí)、位錯(cuò)誤檢測(cè)。

主機(jī)特性

4字深度的 命令/發(fā)送/接收FIFO

命令 FIFO 等待空閑 I2C 總線:在啟動(dòng)傳輸之前,命令 FIFO 會(huì)等待 I2C 總線空閑

命令 FIFO 支持啟動(dòng)(重復(fù))START 和 STOP 條件:可以發(fā)起一個(gè)或多個(gè)主接收器傳輸

STOP 條件可以從命令 FIFO生成,也可在發(fā)送 FIFO為空時(shí)自動(dòng)生成

主機(jī)請(qǐng)求輸入:用于控制 I2C總線傳輸?shù)膯?dòng)時(shí)間

靈活的接收數(shù)據(jù)匹配功能:可以在數(shù)據(jù)匹配時(shí)生成中斷,并丟棄不需要的數(shù)據(jù)

標(biāo)志位和可選中斷:用于指示重復(fù) START 條件、STOP 條件、仲裁丟失、意外的 NACK 以及命令字錯(cuò)誤

支持可配置的總線空閑超時(shí)和引腳低電平超時(shí):增強(qiáng)總線的魯棒性和可靠性

從機(jī)特性

獨(dú)立的 I2C 從機(jī)寄存器:減少因主/從切換帶來(lái)的軟件開(kāi)銷

支持 7 位或 10 位地址、地址范圍、SMBus 警報(bào)和通用呼叫地址:提供靈活的地址配置和通信功能

發(fā)送/接收數(shù)據(jù)寄存器支持中斷或 DMA 請(qǐng)求:便于高效的數(shù)據(jù)收發(fā)

軟件可控制的 ACK 或 NACK:支持在 ACK/NACK 位上進(jìn)行可選的時(shí)鐘拉伸

可配置的時(shí)鐘拉伸:避免發(fā)送 FIFO 下溢和接收 FIFO 上溢錯(cuò)誤

標(biāo)志位和可選中斷:用于指示數(shù)據(jù)包結(jié)束、STOP 條件或位錯(cuò)誤檢測(cè)

主機(jī)/從機(jī)傳輸數(shù)據(jù)

CKS32K148系列MCU的LPI2C框圖如下所示:

7f456b88-604a-11f0-baa5-92fbcf53809c.png

圖1 LPI2C框圖

LPI2C 主機(jī)和從機(jī)控制器邏輯相互獨(dú)立,用于在 I2C 總線上分開(kāi)執(zhí)行所有主/從模式傳輸任務(wù)。這種獨(dú)立性使得主/從控制器能夠高效地管理總線通信,提高了系統(tǒng)的靈活性和性能。

LPI2C端口

LPI2C在不同外部條件下支持不同端口配置模式,通過(guò)MCFGR1[26:24]寄存器配置。

開(kāi)漏支持:LPI2C主設(shè)備默認(rèn)將SDA和SCL引腳配置為開(kāi)漏模式。

高速模式支持:高速模式的支持也取決于具體的設(shè)備,并且要求SCL引腳支持I2C規(guī)范中所需的電流源上拉。

超快速模式支持:LPI2C主設(shè)備還支持使用SDA和SCL引腳實(shí)現(xiàn)I2C超快速模式所需的僅輸出推挽功能。支持超快速模式還需要設(shè)置MCFGR1[IGNACK]位。

推挽式雙線支持:LPI2C主設(shè)備還支持推挽式雙線配置,如果LPI2C是唯一的主設(shè)備且總線上的所有I2C引腳電壓相同,則可以支持部分高速模式。

推挽式四線支持:推挽式4線配置將SCL/SDA引腳用于輸入數(shù)據(jù);SCLS/SDAS引腳用于輸出數(shù)據(jù),且極性可配置。注意在使用此四線配置時(shí),LPI2C主設(shè)備邏輯和LPI2C從設(shè)備邏輯無(wú)法連接到單獨(dú)的I2C總線。

LPI2C主機(jī)傳輸

當(dāng)LPI2C被啟用時(shí),它會(huì)持續(xù)監(jiān)控I2C總線,以檢測(cè)總線是否處于空閑狀態(tài)(通過(guò)MSR[BBF]標(biāo)志位)。當(dāng)檢測(cè)到總線空閑超時(shí)(由 MCFGR2[BUSIDLE] 配置)或者STOP條件時(shí),I2C總線將被視為空閑。

在I2C總線空閑后,如果發(fā)送 FIFO不為空,并且主機(jī)請(qǐng)求被觸發(fā)或禁用,LPI2C主控制器將啟動(dòng)I2C總線上的傳輸。這一過(guò)程包括以下步驟:

等待總線空閑時(shí)間

等待的時(shí)間= (MCCR0[CLKLO] + 1) * 預(yù)分頻器 (MCFGR1[PRESCALE])。

發(fā)送 START 條件和地址字節(jié)

使用主時(shí)鐘配置寄存器 0 (MCCR0) 中的時(shí)序配置發(fā)送 START 條件和地址字節(jié);如果配置為高速模式傳輸,則使用主時(shí)鐘配置寄存器 1 (MCCR1) 中的時(shí)序配置。

執(zhí)行主發(fā)送或主接收傳輸

根據(jù)發(fā)送 FIFO 的配置執(zhí)行主發(fā)送或主接收傳輸。

在最后一次主接收傳輸中發(fā)送 NACK

除非發(fā)送 FIFO 中的下一個(gè)命令也是接收數(shù)據(jù)命令且發(fā)送 FIFO 不為空,否則在最后一次主接收傳輸中發(fā)送 NACK。

發(fā)送重復(fù) START 或 STOP 條件

根據(jù)發(fā)送 FIFO 和/或 MCFGR1[AUTOSTOP] 的配置發(fā)送重復(fù) START 或 STOP 條件。

當(dāng) LPI2C 主控制器被禁用時(shí)(無(wú)論是由于 MCR[MEN] 被清除還是由于模式進(jìn)入自動(dòng)禁用),LPI2C 將繼續(xù)清空發(fā)送 FIFO(在發(fā)送 FIFO 為空后,LPI2C 會(huì)自動(dòng)生成 STOP 條件)直到發(fā)送 STOP 條件。

LPI2C從機(jī)傳輸

當(dāng)LPI2C被啟用前可對(duì)從機(jī)的地址進(jìn)行匹配設(shè)置:支持 7 位或 10 位地址模式,地址可以配置匹配范圍。

等待主機(jī)的 START 條件:從機(jī)監(jiān)控 I2C 總線,等待主機(jī)發(fā)送 START 條件和從機(jī)地址。

地址匹配:如果接收到的地址與從機(jī)配置的地址匹配,從機(jī)發(fā)送 ACK 響應(yīng),然后LPI2C從機(jī)會(huì)自動(dòng)執(zhí)行從機(jī)發(fā)送(slave-transmit)或從機(jī)接收(slave-receive)傳輸。

發(fā)送、接收數(shù)據(jù):從機(jī)通過(guò)發(fā)送數(shù)據(jù)寄存器 STDR 發(fā)送數(shù)據(jù);通過(guò)接收數(shù)據(jù)寄存器SRDR接收主機(jī)發(fā)送的數(shù)據(jù)。

處理接收完成:如果檢測(cè)到 STOP 條件或數(shù)據(jù)包結(jié)束,從機(jī)可以觸發(fā)中斷或標(biāo)志位,通知軟件處理接收到的數(shù)據(jù)。

LPI2C主機(jī)時(shí)序配置說(shuō)明

LPI2C通訊時(shí),時(shí)序參數(shù)必須配置為滿足 I2C 規(guī)范的要求;這將取決于所支持的模式和 LPI2C 功能時(shí)鐘頻率。以下表格提供了不同模式下寄存器時(shí)序配置示例:

表1 寄存器時(shí)序配置

7f4e039c-604a-11f0-baa5-92fbcf53809c.png

LPI2C主從通訊實(shí)例

1. 配置LPI2C時(shí)鐘

CLOCK_DRV_Init(&clockMan1_InitConfig0);

其中“clockMan1_InitConfig0”中包含對(duì)SIRC、FIRC、SOSC、PLL、以及LPI2C外設(shè)(在peripheralClockConfig0結(jié)構(gòu)體內(nèi))的時(shí)鐘配置。

peripheral_clock_config_t peripheralClockConfig0[NUM_OF_PERIPHERAL_CLO CKS_0] = {

...

{

.clockName = LPI2C1_CLK,

.clkGate = true,

.clkSrc=CLK_SRC_SIRC_DIV2,//LPI2C的時(shí)鐘選擇:SOSC/SIRC/FIRC/SPLL

.frac = MULTIPLY_BY_ONE,

.divider = DIVIDE_BY_ONE,

},

...

}

2. 配置LPI2C 引腳

PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);

其中“g_pin_mux_InitConfigArr0”內(nèi)對(duì)LPI2C引腳進(jìn)行配置:

pin_settings_config_t g_pin_mux_InitConfigArr0[NUM_OF_CONFIGURED_PINS0] = {

...

{//LPI2C SDA引腳設(shè)置

.base = PORTC,

.pinPortIdx = 31U,

.pullConfig = PORT_INTERNAL_PULL_UP_ENABLED,

.driveSelect = PORT_LOW_DRIVE_STRENGTH,

.passiveFilter = false,

.mux = PORT_MUX_ALT4,

.pinLock = false,

.intConfig = PORT_DMA_INT_DISABLED,

.clearIntFlag = false,

.gpioBase = NULL,

.digitalFilter = false,

},

{//LPI2C SCK引腳設(shè)置

.base = PORTE,

.pinPortIdx = 1U,

.pullConfig = PORT_INTERNAL_PULL_UP_ENABLED,

.driveSelect = PORT_LOW_DRIVE_STRENGTH,

.passiveFilter = false,

.mux = PORT_MUX_ALT4,

.pinLock = false,

.intConfig = PORT_DMA_INT_DISABLED,

.clearIntFlag = false,

.gpioBase = NULL,

.digitalFilter = false,

},

...

}

下表顯示了LPI2C0、LPI2C1的PIN腳在MCU中的資源分配:

表2 LPI2C0外設(shè)引腳復(fù)用

7f65f402-604a-11f0-baa5-92fbcf53809c.png

表3 LPI2C1外設(shè)引腳復(fù)用

7f6f6f14-604a-11f0-baa5-92fbcf53809c.png

3. LPI2C作為主機(jī)收發(fā)數(shù)據(jù)

LPI2C作為主機(jī)FAST模式400K速率配置從機(jī)地址50,設(shè)置參數(shù)如下:

lpi2c_master_user_config_t lpi2c1_MasterConfig0 = {

.slaveAddress = 50U,//地址配置

.is10bitAddr = false,//十位地址配置

.operatingMode = LPI2C_FAST_MODE,//模式配置

.baudRate = 400000UL,//波特率設(shè)置

.transferType = LPI2C_USING_INTERRUPTS,//傳輸方式

.dmaChannel = 0U,//若使能了DMA,則DMA設(shè)置的通道

.masterCallback = NULL,//中斷函數(shù)

.callbackParam = NULL

};

LPI2C_DRV_MasterInit(INST_LPI2C1,&lpi2c1_MasterConfig0,&lpi2c1MasterState);//LPI2C作為主機(jī)初始化

LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, masterTxBuffer, BUFF_SIZE, true, OSIF_WAIT_FOREVER);//LPI2C作為主機(jī)發(fā)送數(shù)據(jù)

while(!((LPI2C1->MSR)&LPI2C_MSR_SDF_MASK))//停止位檢測(cè)

{

LPI2C_DRV_MasterReceiveDataBlocking(INST_LPI2C1,masterRxBuffer, BUFF_SIZE, true, OSIF_WAIT_FOREVER);//LPI2C作為主機(jī)接收數(shù)據(jù)

}

1. LPI2C作為從機(jī)收發(fā)數(shù)據(jù)

LPI2C作為從機(jī),地址設(shè)置50,配置中斷接收,設(shè)置參數(shù)如下:

lpi2c_slave_user_config_t lpi2c1_SlaveConfig0 = {

.slaveAddress = 50U,//從機(jī)地址

.is10bitAddr = false,//十位地址配置

.operatingMode = LPI2C_FAST_MODE,//模式配置

.slaveListening = true,//監(jiān)聽(tīng)模式

.transferType = LPI2C_USING_INTERRUPTS,//中斷傳輸

.dmaChannel = 0U,//若配置了DMA,則從機(jī)DMA的通道

.slaveCallback = lpi2c1_SlaveCallback0,//從機(jī)中斷函數(shù)

.callbackParam = NULL

};

LPI2C_DRV_SlaveInit(INST_LPI2C1, &lpi2c1_SlaveConfig0, &lpi2c1SlaveState);//從機(jī)初始化

中斷內(nèi)進(jìn)行數(shù)據(jù)收發(fā):

void lpi2c1_SlaveCallback0(i2c_slave_event_t slaveEvent,void *userData)

{

uint32_t instance;

instance = (uint32_t)userData;

switch(slaveEvent)

{

case I2C_SLAVE_EVENT_RX_REQ://從機(jī)接收數(shù)據(jù)

LPI2C_DRV_SlaveSetRxBuffer(instance,slaveRxBuffer, BUFF_SIZE);

break;

case I2C_SLAVE_EVENT_TX_REQ://從機(jī)發(fā)送數(shù)據(jù)

LPI2C_DRV_SlaveSetTxBuffer(instance, slaveTxBuffer, BUFF_SIZE);

break;

case I2C_SLAVE_EVENT_TX_EMPTY://發(fā)送完成

case I2C_SLAVE_EVENT_RX_FULL://接收完成

break;

case I2C_SLAVE_EVENT_STOP:

SendOK = true;

break;

}

}

至此,LPI2C模塊簡(jiǎn)單的主機(jī)從機(jī)特性及主機(jī)從機(jī)傳輸機(jī)制講述完畢。

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

    關(guān)注

    48

    文章

    7951

    瀏覽量

    154966
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17978

    瀏覽量

    366691
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    9000

    瀏覽量

    153713
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    401

    瀏覽量

    44807

原文標(biāo)題:MCU微課堂|CKS32K148 LPI2C

文章出處:【微信號(hào):中科芯MCU,微信公眾號(hào):中科芯MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    詳解微控制器

    微控制器也稱作微型計(jì)算機(jī)、微型控制器或微機(jī),它是單集成電路組成的小型計(jì)算機(jī),內(nèi)部包括個(gè)相對(duì)簡(jiǎn)單的中央處理、時(shí)鐘、定時(shí)
    發(fā)表于 09-09 16:22 ?2847次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳解</b><b class='flag-5'>微控制器</b>

    中科芯CKS32F030K6T6 高性能32位RISC內(nèi)核MCU 程序兼容STM32F030K6T6

    32 位定時(shí)個(gè)高級(jí)控制 PWM 定時(shí)。CKS32F030xx 系列微控制器工作在-40
    發(fā)表于 03-05 16:23

    請(qǐng)問(wèn)如何在RTD5.0中設(shè)置S32K312的Lpi2c速度?

    我們正在與 S32K312 起開(kāi)發(fā)項(xiàng)目,并獲得 I2C 速度問(wèn)題。我通過(guò)參考手冊(cè)設(shè)置 Lpi2c 參數(shù),并且 通過(guò) GUI 獲得正確的速度 1Mbit/s (
    發(fā)表于 03-17 08:04

    FRDM-MCXN947在初始化lpI2C時(shí), I2C無(wú)法正常工作怎么解決?

    我正在使用 FRDM-MCXN947 開(kāi)發(fā)板,發(fā)現(xiàn)在初始化 lpI2C 時(shí), I2C 無(wú)法正常工作。我的配置如圖所示。 我使用的配置基于演示。您能幫我檢查下問(wèn)題可能是什么嗎?謝謝。
    發(fā)表于 03-25 06:32

    K32L2系列微控制器資料分享

    K32L2系列微控制器宣傳手冊(cè)
    發(fā)表于 12-12 06:44

    LPI2C如何在tx fifo計(jì)數(shù)為0時(shí)繼續(xù)發(fā)送時(shí)鐘?

    你好!我正在使用 I2C 與電機(jī)驅(qū)動(dòng)通信的自定義應(yīng)用程序中使用 RT1010。LPI2C模塊的根時(shí)鐘為8MHz(由24MHz時(shí)鐘導(dǎo)出),I2C
    發(fā)表于 03-17 06:54

    如果LPI2C可以低功耗運(yùn)行,怎么知道LPI2C運(yùn)行在stop模式?

    如果LPI2C可以低功耗運(yùn)行(比如stop模式)(Doze模式開(kāi)啟),我怎么知道LPI2C運(yùn)行在stop模式?程序應(yīng)該停在進(jìn)入STOP的位置?
    發(fā)表于 03-22 07:49

    如何使用lpi2c0_SlaveCallback0函數(shù)?

    大家好,我想低估 LPI2C 從機(jī)回調(diào) void lpi2c0_SlaveCallback0(i2c_slave_event_t slaveEvent,void *userData);用戶數(shù)
    發(fā)表于 03-29 06:19

    請(qǐng)問(wèn)S32K148 LPI2C主控如何支持時(shí)鐘延展功能?

    我們想使用 S32K148 LPI2C 配置 ADI A2B 網(wǎng)絡(luò),需要 I2C master 支持時(shí)鐘延展功能。S32K148
    發(fā)表于 04-06 06:36

    imxrt1052使用LPI2C_MasterTransferNonBlocking API時(shí)的i2c傳輸模式卡在irq_callback中怎么解決?

    NXP developers,當(dāng)我使用MCUXpresso Config Tools v12.1配置LPI2C為傳輸模式,然后使用LPI2C
    發(fā)表于 04-11 08:39

    S32K148微控制器是否支持帶PHY的MII模式?

    我正在使用 S32K148 微控制器,它是否支持帶 PHY 的 MII 模式?需要做什么設(shè)置才能在 MII 模式下工作?TX_CLK 和 RX_CLK 應(yīng)該配置為 2.5MHz/25MHz 嗎?
    發(fā)表于 04-17 08:43

    有沒(méi)有辦法配置lpi2c來(lái)嗅探總線并將所有數(shù)據(jù)存儲(chǔ)在緩沖區(qū)中?

    lpi2c 配置為從設(shè)備,給它個(gè)任意地址,并將回調(diào)配置為在線路上檢測(cè)到任何內(nèi)容時(shí)執(zhí)行。問(wèn)題是回調(diào)例程似乎只在 i2c 幀指向我的嗅探節(jié)點(diǎn)(相同的從屬地址)時(shí)觸發(fā)。否則,即使在總線
    發(fā)表于 04-28 08:50

    為什么無(wú)法在LPI2C4上發(fā)送數(shù)據(jù)?

    LPI2C 驅(qū)動(dòng)程序(版本 2.4.1)。 我按如下方式配置了引腳: 然后單擊 Project Explorer &gt; Open Peripherals 并添加個(gè)
    發(fā)表于 05-18 06:05

    S32K148如何計(jì)算微控制器最壞情況下的電流消耗?

    (μA/MHz) 是什么意思嗎。這是否意味著每 1Mhz IC 將消耗 719mA?(我知道我錯(cuò)了,如果是那樣的話,電流將是巨大的!?。?! ) 般來(lái)說(shuō),我們?nèi)绾斡?jì)算微控制器最壞情況下的電流消耗。 #S32K148
    發(fā)表于 06-09 07:48

    昂科燒錄支持CETC中科芯的32位微控制器CKS32F051K8U

    芯片燒錄領(lǐng)導(dǎo)者昂科技術(shù)近期宣布了其燒錄軟件的最新迭代,并公布了系列新增兼容芯片型號(hào)。在此次更新中,中科芯(CETC)推出的32位微控制器CKS32F051K8U已被昂科加密燒錄設(shè)備AP8000所
    的頭像 發(fā)表于 04-15 22:08 ?241次閱讀
    昂科燒錄<b class='flag-5'>器</b>支持CETC中科芯的32位<b class='flag-5'>微控制器</b><b class='flag-5'>CKS32F051K</b>8U