/* **************************************************************************** PROJECT : RIIC driver FILE : $Id: r_riic_api.h 11013 2016-11-08 09:07:54Z florian.zimmermann $ ============================================================================ DESCRIPTION Driver for RIIC macro ============================================================================ C O P Y R I G H T ============================================================================ Copyright (c) 2014 by Renesas Electronics (Europe) GmbH. Arcadiastrasse 10 D-40472 Duesseldorf Germany All rights reserved. ============================================================================ Purpose: only for testing DISCLAIMER This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all applicable laws, including copyright laws. THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of this software. By using this software, you agree to the additional terms and conditions found by accessing the following link: http://www.renesas.com/disclaimer * Copyright (C) 2011 Renesas Electronics Corporation. All rights reserved. **************************************************************************** */ #ifndef R_RIIC_API_H_ #define R_RIIC_API_H_ #ifdef __cplusplus extern "C" { #endif /******************************************************************************* Title: RIIC API An application using RIIC should include this header file. */ /******************************************************************************* Section: Global Types */ /******************************************************************************* Enum: r_riic_Error_t RIIC macro driver error code. If an error occures these enums give information about the reason. Values: R_RIIC_ERR_OK - No error R_RIIC_ERR_NG - Unspecified error R_RIIC_ERR_RANGE - Unit do not exist R_RIIC_ERR_PORTINIT - RIIC port init failed R_RIIC_ERR_BUFOVERRUN - Buffer is already full R_RIIC_ERR_RBINIT - Ring buffer init failed R_RIIC_ERR_NODATA - No data to send R_RIIC_ERR_LAST - Delimiter */ typedef enum { R_RIIC_ERR_OK = 0x00, R_RIIC_ERR_NG = 0x01, R_RIIC_ERR_RANGE = 0x02, R_RIIC_ERR_PORTINIT, R_RIIC_ERR_BUFOVERRUN, R_RIIC_ERR_RBINIT, R_RIIC_ERR_NODATA, R_RIIC_ERR_LAST } r_riic_Error_t; /******************************************************************************* Type: r_riic_Parameter_t RIIC macro configuration data Members: Baudrate - Baud rate value */ typedef struct { uint32_t Baudrate; } r_riic_Parameter_t; /******************************************************************************* Section: Global API Functions */ /******************************************************************************* Function: R_RIIC_Init Driver init function. Most parameters are set automatically (for standard application) Parameters: Unit - Instance number Config - see: <r_riic_Parameter_t> Returns: see: <r_riic_Error_t> */ r_riic_Error_t R_RIIC_Init(uint32_t Unit, r_riic_Parameter_t *Config); /******************************************************************************* Function: R_RIIC_DeInit Driver deinit function. Parameters: Unit - Instance number Returns: see: <r_riic_Error_t> */ r_riic_Error_t R_RIIC_DeInit(uint32_t Unit); /******************************************************************************* Function: R_RIIC_data_receive Read received data out of the RIIC RX register. This function simply returns the RX register value, it does not check for availability of data. Parameters: Unit - Instance number Returns: Received data */ void R_RIIC_data_receive(uint32_t Unit, uint8_t* rx_buffer); /******************************************************************************* Function: R_RIIC_data_send Write one value to the RIIC TX register. The function waits until any ongoing transmission is completed and writes then the data to the TX register. Parameters: Unit - Instance number TxData - Value to be transmitted Returns: see: <r_riic_Error_t> */ r_riic_Error_t R_RIIC_data_send(uint32_t Unit, uint8_t* TxData); void R_RIIC_Master_start_condition(uint32_t Unit); void R_RIIC_Master_stop_condition(uint32_t Unit, uint8_t* RxBuffer); r_riic_Error_t R_RIIC_Slave_address_send(uint32_t Unit, uint8_t *TxData); /******************************************************************************* Function: R_RIIC_transmit_to_slave Write a series of values to a IIC slave. IIC slave address is assumed to by first data value in tdata. Function generates a complete Start-Condition, Slave-Address-Send, Data-Send and End-Condition cycle. Parameters: Unit - Instance number tdata - array with data to be send size - number of data to be send (size of tdata array) Returns: see: <r_riic_Error_t> */ r_riic_Error_t R_RIIC_transmit_to_slave(uint32_t Unit, uint8_t *Tdata, uint32_t Size); /******************************************************************************* Function: R_RIIC_receive_from_slave16b Read 1 or 2 bytes from IIC slave with a 16bit address internal address for the device. (note: not all devices may support this format) <slave address 7bit> <internal address 16 bit> <read 2 bytes> Parameters: Unit - Instance number SlaveAddress - slave address 7bit InternalAddress - the device's internal addtess (16bit) Rdata - buffer to store data read from slave size - number of data bytes to be read 1 or 2 Returns: see: <r_riic_Error_t> */ r_riic_Error_t R_RIIC_receive_from_slave16b(uint32_t Unit, uint8_t SlaveAddress, uint16_t InternalAddress, uint8_t *Rdata, uint32_t Size); /******************************************************************************* Function: R_RIIC_receive_from_slave8b Read 1 or 2 bytes from IIC slave with a 8bit address internal address for the device. (note: not all devices may support this format) <slave address 7bit> <internal address 8 bit> <read 2 bytes> Parameters: Unit - Instance number SlaveAddress - slave address 7bit InternalAddress - the device's internal addtess (8bit) Rdata - buffer to store data read from slave size - number of data bytes to be read 1 or 2 Returns: see: <r_riic_Error_t> */ r_riic_Error_t R_RIIC_receive_from_slave8b(uint32_t Unit, uint8_t SlaveAddress, uint8_t InternalAddress, uint8_t *Rdata, uint32_t Size); #ifdef __cplusplus } #endif #endif /* R_RIIC_API_H_ */