Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
i2c_mbed_fpga.cpp@0:fe3c7dde9771, 2020-12-04 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
