Ben Willems / Mbed 2 deprecated MLX90418_I2C_master_bwi

Dependencies:   mbed

Revision:
0:fe3c7dde9771
Child:
5:daab0e0e67e2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/i2c_mbed_fpga.cpp	Fri Dec 04 14:23:17 2020 +0000
@@ -0,0 +1,76 @@
+#include "mbed.h"
+#include "i2c_mbed_fpga.h"
+
+
+char i2cKey[4] = {0x13, 0xA4, 0xD0, 0xD0};
+char CtrPortWactive[4] = {0x00, 0x30, 0x00, 0x71};
+char CtrPortRactive[4] = {0x00, 0x30, 0x00, 0x01};
+
+/** i2c write to slave DUT
+*
+*  @param i2c_master specifies the i2c interface
+*  @param word is considered as 4byte char data
+*/
+int i2c_word_write(I2C i2c_master, char *word){
+    int ack=1;
+
+    if(ack!=0)
+    {
+        ack = i2c_master.write(i2c_slave_addr, word, 4, 0);
+        wait_ms(1);
+    }  
+
+    if(ack==0)
+        return 0;
+    else
+        return 1; 
+}
+
+
+/** i2c read from slave DUT
+*
+*  @param i2c_master specifies the i2c interface
+*  @param word is 4byte, first 2bytes as addr, the rest 2bytes to store data
+*/
+int i2c_word_read(I2C i2c_master, char *word){
+    int ack=1;
+
+    if(ack!=0)
+    {
+        ack = i2c_master.write(i2c_slave_addr, word, 2, 1);
+        ack += i2c_master.read(i2c_slave_addr, word+2, 2, 0);
+        wait_ms(1);
+    }  
+
+    if(ack==0)
+        return 0;
+    else
+        return 1; 
+}
+
+
+/** i2c enter key
+*
+*  @param specifc key needed to enter i2c mode of DUT
+*/
+int i2c_keyEntry(I2C i2c_master){
+    return i2c_word_write(i2c_master, i2cKey);
+}
+
+
+/** Activate eeprom for write operations
+*
+*  @param specifc key needed to enter i2c mode of DUT
+*/
+int ctrPort_WriteActive(I2C i2c_master){
+    return i2c_word_write(i2c_master, CtrPortWactive);
+}
+
+
+/** Activate eeprom for read operations
+*
+*  @param specifc key needed to enter i2c mode of DUT
+*/
+int ctrPort_ReadActive(I2C i2c_master){
+    return i2c_word_write(i2c_master, CtrPortRactive);
+}
\ No newline at end of file