32 lines
		
	
	
		
			940 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			940 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-3-Clause
 | |
|  */
 | |
| #ifndef _PIO_I2C_H
 | |
| #define _PIO_I2C_H
 | |
| 
 | |
| #include "i2c.pio.h"
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // Low-level functions
 | |
| 
 | |
| void pio_i2c_start(PIO pio, uint sm);
 | |
| void pio_i2c_stop(PIO pio, uint sm);
 | |
| void pio_i2c_repstart(PIO pio, uint sm);
 | |
| 
 | |
| bool pio_i2c_check_error(PIO pio, uint sm);
 | |
| void pio_i2c_resume_after_error(PIO pio, uint sm);
 | |
| 
 | |
| // If I2C is ok, block and push data. Otherwise fall straight through.
 | |
| void pio_i2c_put_or_err(PIO pio, uint sm, uint16_t data);
 | |
| uint8_t pio_i2c_get(PIO pio, uint sm);
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // Transaction-level functions
 | |
| 
 | |
| int pio_i2c_write_blocking(PIO pio, uint sm, uint8_t addr, uint8_t *txbuf, uint len);
 | |
| int pio_i2c_read_blocking(PIO pio, uint sm, uint8_t addr, uint8_t *rxbuf, uint len);
 | |
| 
 | |
| #endif
 |