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@5:daab0e0e67e2, 2021-01-22 (annotated)
- Committer:
- wuliqunyy
- Date:
- Fri Jan 22 14:06:54 2021 +0000
- Revision:
- 5:daab0e0e67e2
- Parent:
- 0:fe3c7dde9771
- Child:
- 6:019ab407ac3c
i2c ready
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 | /** i2c write to slave DUT |
| wuliqunyy | 0:fe3c7dde9771 | 6 | * |
| wuliqunyy | 0:fe3c7dde9771 | 7 | * @param i2c_master specifies the i2c interface |
| wuliqunyy | 0:fe3c7dde9771 | 8 | * @param word is considered as 4byte char data |
| wuliqunyy | 0:fe3c7dde9771 | 9 | */ |
| wuliqunyy | 5:daab0e0e67e2 | 10 | int i2c_mbed_fpga::i2c_word_write(char *word){ |
| wuliqunyy | 5:daab0e0e67e2 | 11 | int ack; |
| wuliqunyy | 5:daab0e0e67e2 | 12 | ack = i2c_master.write(i2c_slave_addr, word, 4, 0); |
| wuliqunyy | 5:daab0e0e67e2 | 13 | wait_us(100); |
| wuliqunyy | 5:daab0e0e67e2 | 14 | return ack; |
| wuliqunyy | 0:fe3c7dde9771 | 15 | } |
| wuliqunyy | 0:fe3c7dde9771 | 16 | |
| wuliqunyy | 0:fe3c7dde9771 | 17 | |
| wuliqunyy | 0:fe3c7dde9771 | 18 | /** i2c read from slave DUT |
| wuliqunyy | 0:fe3c7dde9771 | 19 | * |
| wuliqunyy | 0:fe3c7dde9771 | 20 | * @param i2c_master specifies the i2c interface |
| wuliqunyy | 0:fe3c7dde9771 | 21 | * @param word is 4byte, first 2bytes as addr, the rest 2bytes to store data |
| wuliqunyy | 0:fe3c7dde9771 | 22 | */ |
| wuliqunyy | 5:daab0e0e67e2 | 23 | int i2c_mbed_fpga::i2c_word_read(char *word){ |
| wuliqunyy | 5:daab0e0e67e2 | 24 | int ack; |
| wuliqunyy | 5:daab0e0e67e2 | 25 | ack = i2c_master.write(i2c_slave_addr, word, 2, 1); |
| wuliqunyy | 5:daab0e0e67e2 | 26 | ack += i2c_master.read(i2c_slave_addr, word+2, 2, 0); |
| wuliqunyy | 5:daab0e0e67e2 | 27 | wait_us(100); |
| wuliqunyy | 5:daab0e0e67e2 | 28 | return (ack == 0) ? 0 : 1; |
| wuliqunyy | 0:fe3c7dde9771 | 29 | } |
| wuliqunyy | 0:fe3c7dde9771 | 30 | |
| wuliqunyy | 0:fe3c7dde9771 | 31 | |
| wuliqunyy | 5:daab0e0e67e2 | 32 | /** i2c enter key to open I2C window |
| wuliqunyy | 0:fe3c7dde9771 | 33 | * |
| wuliqunyy | 0:fe3c7dde9771 | 34 | * @param specifc key needed to enter i2c mode of DUT |
| wuliqunyy | 0:fe3c7dde9771 | 35 | */ |
| wuliqunyy | 5:daab0e0e67e2 | 36 | int i2c_mbed_fpga::i2c_window_open(){ |
| wuliqunyy | 5:daab0e0e67e2 | 37 | char i2cKey[4] = {0x13, 0xA4, 0xD0, 0xD0}; |
| wuliqunyy | 5:daab0e0e67e2 | 38 | return i2c_word_write(i2cKey); |
| wuliqunyy | 0:fe3c7dde9771 | 39 | } |
| wuliqunyy | 0:fe3c7dde9771 | 40 | |
| wuliqunyy | 5:daab0e0e67e2 | 41 | /** i2c enter key to Start the motor |
| wuliqunyy | 0:fe3c7dde9771 | 42 | * |
| wuliqunyy | 0:fe3c7dde9771 | 43 | * @param specifc key needed to enter i2c mode of DUT |
| wuliqunyy | 0:fe3c7dde9771 | 44 | */ |
| wuliqunyy | 5:daab0e0e67e2 | 45 | int i2c_mbed_fpga::i2c_motor_start(){ |
| wuliqunyy | 5:daab0e0e67e2 | 46 | char i2cKey[4] = {0x13, 0xA4, 0xCA, 0xFE}; |
| wuliqunyy | 5:daab0e0e67e2 | 47 | return i2c_word_write(i2cKey); |
| wuliqunyy | 0:fe3c7dde9771 | 48 | } |
