Ben Willems / Mbed 2 deprecated MLX90418_I2C_master_bwi

Dependencies:   mbed

Committer:
wuliqunyy
Date:
Fri Dec 04 14:23:17 2020 +0000
Revision:
0:fe3c7dde9771
Child:
5:daab0e0e67e2
initial commit to share

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wuliqunyy 0:fe3c7dde9771 1 #include "mbed.h"
wuliqunyy 0:fe3c7dde9771 2 #include "i2c_mbed_fpga.h"
wuliqunyy 0:fe3c7dde9771 3
wuliqunyy 0:fe3c7dde9771 4
wuliqunyy 0:fe3c7dde9771 5 char i2cKey[4] = {0x13, 0xA4, 0xD0, 0xD0};
wuliqunyy 0:fe3c7dde9771 6 char CtrPortWactive[4] = {0x00, 0x30, 0x00, 0x71};
wuliqunyy 0:fe3c7dde9771 7 char CtrPortRactive[4] = {0x00, 0x30, 0x00, 0x01};
wuliqunyy 0:fe3c7dde9771 8
wuliqunyy 0:fe3c7dde9771 9 /** i2c write to slave DUT
wuliqunyy 0:fe3c7dde9771 10 *
wuliqunyy 0:fe3c7dde9771 11 * @param i2c_master specifies the i2c interface
wuliqunyy 0:fe3c7dde9771 12 * @param word is considered as 4byte char data
wuliqunyy 0:fe3c7dde9771 13 */
wuliqunyy 0:fe3c7dde9771 14 int i2c_word_write(I2C i2c_master, char *word){
wuliqunyy 0:fe3c7dde9771 15 int ack=1;
wuliqunyy 0:fe3c7dde9771 16
wuliqunyy 0:fe3c7dde9771 17 if(ack!=0)
wuliqunyy 0:fe3c7dde9771 18 {
wuliqunyy 0:fe3c7dde9771 19 ack = i2c_master.write(i2c_slave_addr, word, 4, 0);
wuliqunyy 0:fe3c7dde9771 20 wait_ms(1);
wuliqunyy 0:fe3c7dde9771 21 }
wuliqunyy 0:fe3c7dde9771 22
wuliqunyy 0:fe3c7dde9771 23 if(ack==0)
wuliqunyy 0:fe3c7dde9771 24 return 0;
wuliqunyy 0:fe3c7dde9771 25 else
wuliqunyy 0:fe3c7dde9771 26 return 1;
wuliqunyy 0:fe3c7dde9771 27 }
wuliqunyy 0:fe3c7dde9771 28
wuliqunyy 0:fe3c7dde9771 29
wuliqunyy 0:fe3c7dde9771 30 /** i2c read from slave DUT
wuliqunyy 0:fe3c7dde9771 31 *
wuliqunyy 0:fe3c7dde9771 32 * @param i2c_master specifies the i2c interface
wuliqunyy 0:fe3c7dde9771 33 * @param word is 4byte, first 2bytes as addr, the rest 2bytes to store data
wuliqunyy 0:fe3c7dde9771 34 */
wuliqunyy 0:fe3c7dde9771 35 int i2c_word_read(I2C i2c_master, char *word){
wuliqunyy 0:fe3c7dde9771 36 int ack=1;
wuliqunyy 0:fe3c7dde9771 37
wuliqunyy 0:fe3c7dde9771 38 if(ack!=0)
wuliqunyy 0:fe3c7dde9771 39 {
wuliqunyy 0:fe3c7dde9771 40 ack = i2c_master.write(i2c_slave_addr, word, 2, 1);
wuliqunyy 0:fe3c7dde9771 41 ack += i2c_master.read(i2c_slave_addr, word+2, 2, 0);
wuliqunyy 0:fe3c7dde9771 42 wait_ms(1);
wuliqunyy 0:fe3c7dde9771 43 }
wuliqunyy 0:fe3c7dde9771 44
wuliqunyy 0:fe3c7dde9771 45 if(ack==0)
wuliqunyy 0:fe3c7dde9771 46 return 0;
wuliqunyy 0:fe3c7dde9771 47 else
wuliqunyy 0:fe3c7dde9771 48 return 1;
wuliqunyy 0:fe3c7dde9771 49 }
wuliqunyy 0:fe3c7dde9771 50
wuliqunyy 0:fe3c7dde9771 51
wuliqunyy 0:fe3c7dde9771 52 /** i2c enter key
wuliqunyy 0:fe3c7dde9771 53 *
wuliqunyy 0:fe3c7dde9771 54 * @param specifc key needed to enter i2c mode of DUT
wuliqunyy 0:fe3c7dde9771 55 */
wuliqunyy 0:fe3c7dde9771 56 int i2c_keyEntry(I2C i2c_master){
wuliqunyy 0:fe3c7dde9771 57 return i2c_word_write(i2c_master, i2cKey);
wuliqunyy 0:fe3c7dde9771 58 }
wuliqunyy 0:fe3c7dde9771 59
wuliqunyy 0:fe3c7dde9771 60
wuliqunyy 0:fe3c7dde9771 61 /** Activate eeprom for write operations
wuliqunyy 0:fe3c7dde9771 62 *
wuliqunyy 0:fe3c7dde9771 63 * @param specifc key needed to enter i2c mode of DUT
wuliqunyy 0:fe3c7dde9771 64 */
wuliqunyy 0:fe3c7dde9771 65 int ctrPort_WriteActive(I2C i2c_master){
wuliqunyy 0:fe3c7dde9771 66 return i2c_word_write(i2c_master, CtrPortWactive);
wuliqunyy 0:fe3c7dde9771 67 }
wuliqunyy 0:fe3c7dde9771 68
wuliqunyy 0:fe3c7dde9771 69
wuliqunyy 0:fe3c7dde9771 70 /** Activate eeprom for read operations
wuliqunyy 0:fe3c7dde9771 71 *
wuliqunyy 0:fe3c7dde9771 72 * @param specifc key needed to enter i2c mode of DUT
wuliqunyy 0:fe3c7dde9771 73 */
wuliqunyy 0:fe3c7dde9771 74 int ctrPort_ReadActive(I2C i2c_master){
wuliqunyy 0:fe3c7dde9771 75 return i2c_word_write(i2c_master, CtrPortRactive);
wuliqunyy 0:fe3c7dde9771 76 }