Difference between revisions of "Component: I2C Multiplexer (TCA9548A) (Comms: System)"

From Flowcode Help
Jump to navigationJump to search
(XML import)
 
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
+
{| style="width:50%"
 
 
{| width="50%"
 
 
|-
 
|-
| width="20%" style="color: gray;" | Author
+
| width="20%" style="color:gray;" | Author
 
| MatrixTSL
 
| MatrixTSL
 
|-
 
|-
| width="20%" style="color: gray;" | Version
+
| width="20%" style="color:gray;" | Version
| 1.0 (Release)
+
| 1.0
 
|-
 
|-
| width="20%" style="color: gray;" | Category
+
| width="20%" style="color:gray;" | Category
 
| Comms: System
 
| Comms: System
 
|}
 
|}
  
  
 +
==I2C Multiplexer (TCA9548A) component==
 +
An I2C multiplexing IC allowing up to 8 different I2C busses to be connected to a single I2C channel on your target microcontroller.
 +
 +
==Component Source Code==
  
==[[File:Component Icon 5915b437_6925_4d90_a0f8_f91702837bdb.png|Image]] I2C Multiplexer (TCA9548A) component==
+
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_I2C_Multiplexer_TCA9548A.fcfx FC_Comp_Source_I2C_Multiplexer_TCA9548A.fcfx]
An I2C multiplexing IC allowing up to 8 different I2C busses to be connected to a single
 
I2C channel on your target microcontroller.
 
  
==Examples==
+
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_I2C_Multiplexer_TCA9548A.fcfx FC_Comp_Source_I2C_Multiplexer_TCA9548A.fcfx]
''<span style="color:red;">No additional examples</span>''
+
 
 +
==Detailed description==
  
  
==Downloadable macro reference==
 
  
===<span style="font-weight: normal;"><u><tt>SelectChannel</tt></u></span>===
 
Selects a single output channel to multiplex the I2C output to (0-7).
 
  
'''Parameters'''
 
  
:[[Variable Types|BYTE]] ''Channel''
 
::Range: 0-7
 
  
  
'''Return value'''
 
  
:''This call does not return a value''
 
  
  
===<span style="font-weight: normal;"><u><tt>SetChannelMask</tt></u></span>===
 
Allows a user determined number of channels to be connected to the I2C bus.
 
  
'''Parameters'''
 
  
:[[Variable Types|BYTE]] ''Mask''
 
::Range: 0-255 / Bit0=CH0 EN / Bit1 = CH1 EN etc
 
  
  
'''Return value'''
 
  
:''This call does not return a value''
 
  
  
===<span style="font-weight: normal;"><u><tt>Initialise</tt></u></span>===
 
Startup the I2C bus ready for communications.
 
  
'''Parameters'''
 
  
:''This macro has no parameters''
 
  
  
'''Return value'''
 
  
:''This call does not return a value''
 
  
 +
''No detailed description exists yet for this component''
  
 +
==Examples==
  
==Simulation macro reference==
 
  
''This component does not contain any simulation macros''
 
  
  
==Property reference==
 
<span style="font-weight: normal;"><u>Address Bits</u></span>
 
  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''AddressBits''.
 
  
''<span style="color:red;">No additional information</span>''
 
  
  
  
<span style="font-weight: normal;"><u>Channel</u></span>
 
  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''cal_i2c1::CHANNEL''.
 
  
Channel selection
 
  
<span style="font-weight: normal;"><u>SDA</u></span>
 
  
This property is of type ''Single digital pin'' and can be referenced with the variable name ''cal_i2c1::SDA''.
 
  
Pin used for SDA (data signal)
 
  
<span style="font-weight: normal;"><u>SCL</u></span>
 
  
This property is of type ''Single digital pin'' and can be referenced with the variable name ''cal_i2c1::SCL''.
 
  
Pin used for SCL (clock signal)
 
  
<span style="font-weight: normal;"><u>Stop Delay</u></span>
 
  
This property is of type ''True or false'' and can be referenced with the variable name ''cal_i2c1::StopDel''.
 
  
On older microcontroller devices there is a potential for the I2C hardware channel to lock up if there is not
 
  
a 10ms delay between an I2C stop event and the next I2C start event.
 
  
  
  
Most modern microcontrollers will not have a problem so this property can be disabled to speed up the
 
  
I2C communications.
+
Here we have a simple example showing how to use the multiplexer to connect multiple of the same I2C sensor IC to the microcontroller.
  
<span style="font-weight: normal;"><u>Baud Select</u></span>
+
The multiplexer IC is connected directly to the microcontroller I2C pins and up to 8 temp/humidity sensors are connected to the CH0-CH7 I2C pins of the multiplexer.
  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''cal_i2c1::BAUD_LIST''.
 
  
Baud rate option selector
+
{{Fcfile|I2C_Multiplex_Example.fcfx|I2C Multiplex Example}}
  
<span style="font-weight: normal;"><u>Baud Rate</u></span>
 
  
This property is of type ''Signed integer'' and can be referenced with the variable name ''cal_i2c1::BAUD''.
 
  
Baud rate to be used
 
  
<span style="font-weight: normal;"><u>Simulate Comms</u></span>
 
  
This property is of type ''True or false'' and can be referenced with the variable name ''SimComms''.
 
  
''<span style="color:red;">No additional information</span>''
 
  
  
  
<span style="font-weight: normal;"><u>Scope Traces</u></span>
 
  
This property is of type ''True or false'' and can be referenced with the variable name ''cal_i2c1::ScopeTraces''.
 
  
Selects if the component pin connections are automatically generated on the data recorder window or not.
+
==Macro reference==
  
Yes: Automatically add the component pins to a group on the data recorder which will reflect the sim data during simultion.
+
===Initialise===
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
 +
|-
 +
| colspan="2" | Startup the I2C bus ready for communications.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
No: Do not show the pin signals on the data recorder window.
 
  
<span style="font-weight: normal;"><u>Console Data</u></span>
+
===SelectChannel===
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SelectChannel'''
 +
|-
 +
| colspan="2" | Selects a single output channel to multiplex the I2C output to (0-7).&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Channel
 +
|-
 +
| colspan="2" | Range: 0-7&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
This property is of type ''True or false'' and can be referenced with the variable name ''cal_i2c1::ConsoleData''.
 
  
Selects if the console data is automatically generated or not
+
===SetChannelMask===
 +
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetChannelMask'''
 +
|-
 +
| colspan="2" | Allows a user determined number of channels to be connected to the I2C bus.&nbsp;
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 +
| width="90%" | Mask
 +
|-
 +
| colspan="2" | Range: 0-255 / Bit0=CH0 EN / Bit1 = CH1 EN etc&nbsp;
 +
|-
 +
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
 +
| width="90%" style="border-top: 2px solid #000;" | ''Return''
 +
|}
  
<span style="font-weight: normal;"><u>Injector</u></span>
 
  
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''cal_i2c1::Injector''.
+
==Property reference==
  
Specifies the injector component on the panel to interact with to provide comms simulation.
+
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 +
|-
 +
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
 +
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''
 +
|-
 +
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Multiplexer Properties
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 +
| width="90%" | Address Bits
 +
|-
 +
| colspan="2" | &nbsp;
 +
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | I2C Properties
 +
|-
 +
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Connections
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 +
| width="90%" | Channel
 +
|-
 +
| colspan="2" | Channel selection&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-5-icon.png]]
 +
| width="90%" | SDA
 +
|-
 +
| colspan="2" | Pin used for SDA (data signal)&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-5-icon.png]]
 +
| width="90%" | SCL
 +
|-
 +
| colspan="2" | Pin used for SCL (clock signal)&nbsp;
 +
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Options
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 +
| width="90%" | Stop Delay
 +
|-
 +
| colspan="2" | On older microcontroller devices there is a potential for the I2C hardware channel to lock up if there is not  a 10ms delay between an I2C stop event and the next I2C start event.  Most modern microcontrollers will not have a problem so this property can be disabled to speed up the  I2C communications. &nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 +
| width="90%" | Baud Select
 +
|-
 +
| colspan="2" | Baud rate option selector&nbsp;
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-14-icon.png]]
 +
| width="90%" | Baud Rate
 +
|-
 +
| colspan="2" | Baud rate to be used&nbsp;
 +
|-
 +
| width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]]
 +
| width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Simulation
 +
|-
 +
|-
 +
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 +
| width="90%" | Simulate Comms
 +
|-
 +
| colspan="2" | &nbsp;
 +
|}

Latest revision as of 13:10, 7 February 2023

Author MatrixTSL
Version 1.0
Category Comms: System


I2C Multiplexer (TCA9548A) component

An I2C multiplexing IC allowing up to 8 different I2C busses to be connected to a single I2C channel on your target microcontroller.

Component Source Code

Please click here to download the component source project: FC_Comp_Source_I2C_Multiplexer_TCA9548A.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_I2C_Multiplexer_TCA9548A.fcfx

Detailed description

No detailed description exists yet for this component

Examples

Here we have a simple example showing how to use the multiplexer to connect multiple of the same I2C sensor IC to the microcontroller.

The multiplexer IC is connected directly to the microcontroller I2C pins and up to 8 temp/humidity sensors are connected to the CH0-CH7 I2C pins of the multiplexer.


FC6 Icon.png I2C Multiplex Example






Macro reference

Initialise

Fc9-comp-macro.png Initialise
Startup the I2C bus ready for communications. 
Fc9-void-icon.png - VOID Return


SelectChannel

Fc9-comp-macro.png SelectChannel
Selects a single output channel to multiplex the I2C output to (0-7). 
Fc9-u8-icon.png - BYTE Channel
Range: 0-7 
Fc9-void-icon.png - VOID Return


SetChannelMask

Fc9-comp-macro.png SetChannelMask
Allows a user determined number of channels to be connected to the I2C bus. 
Fc9-u8-icon.png - BYTE Mask
Range: 0-255 / Bit0=CH0 EN / Bit1 = CH1 EN etc 
Fc9-void-icon.png - VOID Return


Property reference

Fc9-prop-icon.png Properties
Fc9-conn-icon.png Multiplexer Properties
Fc9-type-16-icon.png Address Bits
 
Fc9-conn-icon.png I2C Properties
Fc9-conn-icon.png Connections
Fc9-type-16-icon.png Channel
Channel selection 
Fc9-type-5-icon.png SDA
Pin used for SDA (data signal) 
Fc9-type-5-icon.png SCL
Pin used for SCL (clock signal) 
Fc9-conn-icon.png Options
Fc9-type-7-icon.png Stop Delay
On older microcontroller devices there is a potential for the I2C hardware channel to lock up if there is not a 10ms delay between an I2C stop event and the next I2C start event. Most modern microcontrollers will not have a problem so this property can be disabled to speed up the I2C communications.  
Fc9-type-16-icon.png Baud Select
Baud rate option selector 
Fc9-type-14-icon.png Baud Rate
Baud rate to be used 
Fc9-conn-icon.png Simulation
Fc9-type-7-icon.png Simulate Comms