|
void | iic_init (const iic_index_t iic) |
|
void | iic_destroy (const iic_index_t iic) |
|
bool | iic_read_register (const iic_index_t iic, const uint8_t addr, const uint8_t reg, uint8_t *data, uint16_t length) |
|
bool | iic_write_register (const iic_index_t iic, const uint8_t addr, const uint8_t reg, uint8_t *data, uint16_t length) |
|
bool | iic_set_slave_mode (const iic_index_t iic, const uint8_t addr, uint32_t *register_map, const uint32_t rm_length) |
|
void | iic_slave_mode_handler (const iic_index_t iic) |
|
void | iic_reset (const iic_index_t iic) |
|
Functions to use the Inter-Integrated Circuit (IIC).
High-level functions to read/write to clients connected to the two integrated IIC modules. Before sending and receiving bytes the IIC2 must be connect to some I/O pins through the switchbox (see switchbox.h), e.g. Pmod A:
or the SCL and SDA Arduino IIC pins:
The Pmod A pins (see pinmap.h) are good because they have 2K2 pull-up resistors built in. If you want to use more than three IICs then you can use different pins with an external 2K2 pull-up resistor, which should work for more than three boards.
After that, an example of how to use this library for the MASTER.
int main (void)
{
uint32_t i;
uint32_t slave_address = 0x70;
for (int reg=0; reg < 32; reg++) {
printf("register[%d]=error\n",reg); } else {
printf("register[%d]=%d\n",reg,i);
}
}
return EXIT_SUCCESS;
}
An example of how to use this library for the SLAVE.
int main(void)
{
const uint32_t my_slave_address = 0x70;
uint32_t my_register_map[32] = {1,2,3,4,5,6,7,8,9,10,11,12,13,
14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32};
const uint32_t my_register_map_length =
sizeof(my_register_mmap)/sizeof(uint32_t);
&(my_register_map[0]), my_register_map_length);
while (1) {
}
return EXIT_SUCCESS;
}
◆ iic_index_t
Enum of IICs. Functions use a switch numbered from 0..NUM_IICS-1.
Enumerator |
---|
IIC0 | |
IIC1 | |
NUM_IICS | |
Definition at line 114 of file iic.h.
◆ iic_destroy()
Close the shared memory handle for the specified IIC index.
- Parameters
-
uart | The IIC index to remove from the shared memory space. |
- Warning
- Fails with program exit if the IIC channel is outside valid range.
Definition at line 3 of file iic.c.
◆ iic_init()
Initialize the IIC specified by the index with a shared memory handle and a buffer size of 4096 bytes.
- Parameters
-
uart | The IIC index to initialize. |
- Warning
- Fails with program exit if the IIC channel is outside valid range or when the shared memory system has not been instantiated.
Definition at line 2 of file iic.c.
◆ iic_read_register()
bool iic_read_register |
( |
const iic_index_t |
iic, |
|
|
const uint8_t |
addr, |
|
|
const uint8_t |
reg, |
|
|
uint8_t * |
data, |
|
|
uint16_t |
length |
|
) |
| |
- Parameters
-
iic | The IIC index to initialize. |
addr | The IIC address of the client to access. |
reg | The clients register address. |
data | Buffer where the register content is stored. [out] |
length | The amount of data to read. |
Reads the content of the register into data.
- Returns
- 0 if successful, 1 on error
Definition at line 7 of file iic.c.
◆ iic_reset()
- Parameters
-
iic | The IIC index of the hardware to use. Return the IIC module into its default mode. This way it can be used as master. |
Definition at line 6 of file iic.c.
◆ iic_set_slave_mode()
bool iic_set_slave_mode |
( |
const iic_index_t |
iic, |
|
|
const uint8_t |
addr, |
|
|
uint32_t * |
register_map, |
|
|
const uint32_t |
rm_length |
|
) |
| |
Definition at line 4 of file iic.c.
◆ iic_slave_mode_handler()
- Parameters
-
iic | The IIC index of the hardware to use. |
This handles requests that came in to the IIC unit when it is in slave mode.
Definition at line 302 of file iic.c.
◆ iic_write_register()
bool iic_write_register |
( |
const iic_index_t |
iic, |
|
|
const uint8_t |
addr, |
|
|
const uint8_t |
reg, |
|
|
uint8_t * |
data, |
|
|
uint16_t |
length |
|
) |
| |
- Parameters
-
iic | The IIC index to initialize. |
addr | The IIC address of the client to access. |
reg | The clients register address. |
data | Buffer where new the register content is stored. |
length | The amount of data to write. |
Writes data to register.
- Returns
- 0 if successful, 1 on error
Definition at line 10 of file iic.c.