CROSS Technical Documentation User Manual and Technical Doc.
INFN Milano Bicocca
Loading...
Searching...
No Matches
I2C_1.c
Go to the documentation of this file.
1
2/// \file
3#include "tutti_gli_header.h"
4
5// DOCUMENTAZIONE DOXYGEN
6
7
8/*! \page I2C_1_page I2C_1
9*\brief <span style="color:red;"> <b> This is the hw for the I2C_1 fw </b> </span>
10
11*\section I22C_1_section User use of the I2C_1
12<hr width="75%" size="10" align="left">
13
14\n I2C_1 is similar to I2C_0. Refer to it at \ref I2C_0 "I2C_0".
15
16\n The codes for I2C_1 is at:
17- \ref I2C_1.c
18- \ref I2C_1.h
19
20<!-- pappa -->
21*/
22
23
24extern ARM_DRIVER_I2C Driver_I2C1; // Viene inclusa la Periferica I2C1
25ARM_DRIVER_I2C * I2CAdrv = &Driver_I2C1; // Viene creato un puntatore a Driver_I2C1
26
27/*****************************************************************************
28 Callback della Periferica I2C_A
29 ******************************************************************************/
30/*! \brief The I2C_1 interrupt function
31
32*\return No Parameters
33 \showrefby
34*\snippet{lineno} I2C_1.c fun_I2C_1_SignalEvent_t
35 */
36//! <!-- [fun_I2C_1_SignalEvent_t] -->
37void I2C_1_SignalEvent_t (uint32_t event)
38{
39// if(event==ARM_I2C_EVENT_TRANSFER_DONE) // Ricezione e trasmissione finita sia del master che dello slave
40// {
41// __NOP();
42// }
43// if(event==ARM_I2C_EVENT_SLAVE_TRANSMIT)
44// {
45// __NOP();
46// }
47// if(event==ARM_I2C_EVENT_SLAVE_RECEIVE)
48// {
49// __NOP();
50// }
51// if(event==ARM_I2C_EVENT_ADDRESS_NACK)
52// {
53// __NOP();
54// }
55 evento_I2C=event;
56 if(event==ARM_I2C_EVENT_TRANSFER_DONE) // Ricezione e trasmissione finita sia del master che dello slave
57 {
58 __NOP();
59 Error_bad_operation = 0; // Non registriamo errori
60 }
61 if( event & ARM_I2C_EVENT_TRANSFER_INCOMPLETE)
62 {
64 }
65 if(event==ARM_I2C_EVENT_SLAVE_TRANSMIT)
66 {
67 __NOP();
69 }
70 if(event==ARM_I2C_EVENT_SLAVE_RECEIVE)
71 {
72 __NOP();
74 }
75 if (event & ARM_I2C_EVENT_ADDRESS_NACK){
77 }
78 if (event & ARM_I2C_EVENT_ARBITRATION_LOST){
80 }
81 if( event & ARM_I2C_EVENT_BUS_ERROR){
83 }
84 if( event & ARM_I2C_EVENT_BUS_CLEAR){
86 }
87}
88//! <!-- [fun_I2C_1_SignalEvent_t] -->
89
90
91
92/*****************************************************************************
93 I2C_A INIZIALIZE
94 *****************************************************************************/
95
96 /*! \brief The I2C_1 initialize
97
98 *\return No Parameters
99 \showrefby
100\showrefs
101\callgraph
102 *\snippet{lineno} I2C_1.c fun_I2C_1_Initialize
103 */
104
105//! <!-- [fun_I2C_1_Initialize] -->
106void I2C_1_Initialize (void) {
107
108 I2CAdrv->PowerControl (ARM_POWER_OFF); // Terminate any pending transfers, reset IRQ/DMA, power off peripheral
109 I2CAdrv->Uninitialize ();
110
111 I2CAdrv->Initialize (I2C_1_SignalEvent_t); // Viene inizializzata la periferica I2C
112 I2CAdrv->PowerControl (ARM_POWER_FULL); // Viene accesa la periferica
113 I2CAdrv->Control (ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_STANDARD); // Viene impostata la velocit\'a del Bus
114 I2CAdrv->Control (ARM_I2C_BUS_CLEAR, 0);
115}
116//! <!-- [fun_I2C_1_Initialize] -->
117
volatile uint32_t Error_bad_operation
exploited to mark the errors
uint32_t evento_I2C
This is the variable which resembles the flags from the communication.
Definition: I2C_0.c:300
void I2C_1_Initialize(void)
The I2C_1 initialize.
Definition: I2C_1.c:106
void I2C_1_SignalEvent_t(uint32_t event)
The I2C_1 interrupt function.
Definition: I2C_1.c:37