paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [4927] wrote support for i2c2 ( used only on stm32 )


From: antoine drouin
Subject: [paparazzi-commits] [4927] wrote support for i2c2 ( used only on stm32 )
Date: Mon, 14 Jun 2010 16:16:49 +0000

Revision: 4927
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4927
Author:   poine
Date:     2010-06-14 16:16:49 +0000 (Mon, 14 Jun 2010)
Log Message:
-----------
wrote support for i2c2 ( used only on stm32 )

Modified Paths:
--------------
    paparazzi3/trunk/sw/airborne/i2c.c
    paparazzi3/trunk/sw/airborne/i2c.h

Modified: paparazzi3/trunk/sw/airborne/i2c.c
===================================================================
--- paparazzi3/trunk/sw/airborne/i2c.c  2010-06-14 16:13:21 UTC (rev 4926)
+++ paparazzi3/trunk/sw/airborne/i2c.c  2010-06-14 16:16:49 UTC (rev 4927)
@@ -117,3 +117,48 @@
 }
 
 #endif /* USE_I2C1 */
+
+#ifdef USE_I2C2
+
+struct I2C2_P i2c2;
+
+void i2c2_init(void) {
+  i2c2.status = I2C_IDLE;
+  i2c2.finished = NULL;
+  i2c2_hw_init();
+}
+
+void i2c2_receive(uint8_t slave_addr, uint8_t len, volatile bool_t* finished) {
+  i2c2.direction = I2CDirRx;
+  i2c2.slave_addr = slave_addr;
+  i2c2.len_r = len;
+  i2c2.finished = finished;
+  if (finished) *finished = FALSE;
+  i2c2.status = I2C_BUSY;
+  I2c2SendStart();
+}
+
+void i2c2_transmit(uint8_t slave_addr, uint8_t len, volatile bool_t* finished) 
{
+  i2c2.direction = I2CDirTx;
+  i2c2.slave_addr = slave_addr;
+  i2c2.len_w = len;
+  i2c2.finished = finished;
+  if (finished) *finished = FALSE;
+  i2c2.status = I2C_BUSY;
+  I2c2SendStart();
+}
+
+void i2c2_transceive(uint8_t slave_addr, uint8_t len_w, uint16_t len_r, 
volatile bool_t* finished) {
+  i2c2.direction = I2CDirTxRx;
+  i2c2.slave_addr = slave_addr;
+  i2c2.len_w = len_w;
+  i2c2.len_r = len_r;
+  i2c2.finished = finished;
+  if (finished) *finished = FALSE;
+  i2c2.status = I2C_BUSY;
+  I2c2SendStart();
+}
+
+
+
+#endif /* USE_I2C2 */

Modified: paparazzi3/trunk/sw/airborne/i2c.h
===================================================================
--- paparazzi3/trunk/sw/airborne/i2c.h  2010-06-14 16:13:21 UTC (rev 4926)
+++ paparazzi3/trunk/sw/airborne/i2c.h  2010-06-14 16:16:49 UTC (rev 4927)
@@ -5,6 +5,7 @@
 
 #include "i2c_hw.h"
 
+
 #define I2C_START        0x08
 #define I2C_RESTART      0x10
 #define I2C_MT_SLA_ACK   0x18
@@ -185,4 +186,35 @@
 #endif /* USE_I2C1 */
 
 
+
+#ifdef USE_I2C2
+
+#ifndef I2C2_BUF_LEN
+#define I2C2_BUF_LEN 32
+#endif
+
+enum I2CDirection { I2CDirTx, I2CDirRx, I2CDirTxRx };
+
+struct I2C2_P {
+  volatile uint8_t  status;
+  enum I2CDirection direction;
+  volatile uint8_t  slave_addr;
+  volatile uint16_t len_r;
+  volatile uint8_t  len_w;
+  volatile bool_t   stop_after_transmit;
+  volatile uint8_t  index;
+  volatile bool_t*  finished;
+  volatile uint8_t  buf[I2C2_BUF_LEN];
+};
+
+extern struct I2C2_P i2c2;
+
+extern void i2c2_init(void);
+extern void i2c2_receive(uint8_t slave_addr, uint8_t len, volatile bool_t* 
finished);
+extern void i2c2_transmit(uint8_t slave_addr, uint8_t len, volatile bool_t* 
finished);
+extern void i2c2_transceive(uint8_t slave_addr, uint8_t len_w, uint16_t len_r, 
volatile bool_t* finished);
+
+#endif /* USE_I2C2 */
+
+
 #endif /* I2C_H */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]