|
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, e.g.
void switchbox_set_pin(const io_t pin_number, const io_configuration_t io_type)
Set the type of a switch pin.
The Pmod A pins (see pinmap.h) are good because they have 2K2 pull-up resistors built in. IICs can be routed through the switch box (e.g. SWB_IIC0_SCL/SDA, see switchbox.h).
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;
}
bool iic_read_register(const iic_index_t iic, const uint8_t addr, const uint8_t reg, uint8_t *data, uint16_t data_length)
void iic_init(const iic_index_t iic)
Initialize the IIC specified by the index with a shared memory handle and a buffer size of 4096 bytes...
void pynq_init(void)
Initialise the switchbox and GPIO of the PYNQ.
void pynq_destroy(void)
Reset and destroy the switchbox and GPIO of the PYNQ.
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);
while (1) {
}
return EXIT_SUCCESS;
}
void iic_destroy(const iic_index_t iic)
Close the shared memory handle for the specified IIC index.
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_reset(const iic_index_t iic)
void iic_slave_mode_handler(const iic_index_t iic)
void sleep_msec(int msec)
Wait for msec milliseconds.
◆ iic_index_t
Enum of IICs. Functions use a switch numbered from 0..NUM_IICS-1.
Enumerator |
---|
IIC0 | |
IIC1 | |
NUM_IICS | |
Definition at line 104 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 124 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 108 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 |
|
) |
| |
|
extern |
- 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 327 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 314 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 |
|
) |
| |
|
extern |
◆ 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 |
|
) |
| |
|
extern |
- 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 344 of file iic.c.