This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCPDT:如果有多个从属设备连接到I2C总线,如何检测与总线断开的特定从属设备?

Guru**** 2554400 points
Other Parts Discussed in Thread: TM4C1294NCPDT

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1092306/tm4c1294ncpdt-how-to-detect-a-particular-slave-which-is-disconnected-from-the-bus-if-you-are-having-more-than-one-slaves-connected-to-the-i2c-bus

零件号:TM4C1294NCPDT

基本上,我正在做一个项目,在这个项目中,我们有5个设备,它们将通过i2c线路向控制器(TM4C1294NCPDT)发送自己的温度数据。  如果温度超过阈值,我们将使用相应的器件GPIO引脚关闭特定器件。

因此,这些设备按如下方式连接到控制器-- I2C0-设备1 I2C1 -设备2,3 和I2C2 -设备4,5。

在这里,我们能够逐个从所有设备读取数据。但是,从所有5个设备中检测断开的设备正成为一项挑战。 让我们考虑一下,我们是逐个从所有设备获取数据,例如,我们首先尝试从设备1,然后从设备2,3获取数据,以此类推,直到现在最后一个设备, 这里假设由于温度过高而突然切换了设备3 (如上所述),则在这种情况下,控制器卡在以下While循环中

        //Initiate send of data from the MCU
        I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_START);
         
        // Wait until MCU is done transferring.
        while(I2CMasterBusy(I2C0_BASE));

由于此控制器未从设备4和5读取数据。

所以,有人能帮我理解,如果从I2C总线断开任何一个从属设备,那么在这种情况下,如何处理这种情况,并转到连接到控制器的其它从属设备。

我们非常感谢您的任何帮助!

此致

Omkar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    [quote userid="45.7192万" url="~/support/pulcs/arm-based微控制器-group/arm-based微控制器/f/arm-based微控制器-forum/109.2306万/tm4c1294ncpdt-how-1294-to-detect-a-particular-slaver-which-is-disconnected-fe-fo-bus-if-yo-yf-yo-connect-yer-us-yer-fo-connect-fo-no-ip-fave-fo-no-yc-多个"

    因此,这些设备按如下方式连接到控制器-- I2C0-设备1 I2C1 -设备2,3 和I2C2 -设备4,5。

    [/引述]

    只是为了说明一下,您有两台设备连接到I2C1,另有两台设备连接到I2C2?

    [quote userid="45.7192万" url="~/support/pulcs/arm-based - pulics/arm-based - pulinics/109.2306万/tm4c1294ncpdt-how-1294-to-detect-a-particular-laver-which-is disconnected-from-the bus-if-ye-yo-yo-yo-ye-are mis-forum-for-forum-forum-for-forum-fore-1,那么,我们将考虑到第一个设备上的一个设备上的数据,我们将由一个设备,然后再由一个设备, 这里假设由于温度过高而突然切换了设备3 (如上所述),则在这种情况下,控制器在循环时卡在以下位置

    我在这里感到困惑。 您说设备3已关闭,但代码中的I2C0卡住。 I2C0已连接至设备1。  

    [quote userid="45.7192万" url="~/support/pulcs/arm-based微控制器-group/arm-based微控制器/f/arm-based微控制器-forum/109.2306万/tm4c1294ncpdt-how-1294-to-detect-a-particular-slaver-which-is-disconnected-fe-fo-bus-if-yo-yf-yo-connect-yer-us-yer-fo-connect-fo-no-ip-fave-fo-no-yc-多个"

    由于此控制器未从设备4和5读取数据。

    [/引述]

    我想您正在使用中断模式,对吗? 如果正在读取设备4和5的数据,则需要禁用设备2和3的中断,以便它们不会抢占从数据4和5读取的数据。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Omkar,

       我没有听到你的回复。 我想你已经解决了这个问题。 现在我将关闭该线程。 如果您的问题未解决,您只需写回此帖子,该线程将自动重新打开。