Bavo Van Achte
/
MLX90418_I2C_master
Fork
main.cpp@1:47cc6952e346, 2020-12-07 (annotated)
- Committer:
- wuliqunyy
- Date:
- Mon Dec 07 12:21:14 2020 +0000
- Revision:
- 1:47cc6952e346
- Parent:
- 0:fe3c7dde9771
- Child:
- 2:9bdcd2c966de
publish
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 | //#include "serial_fsm.h" |
wuliqunyy | 0:fe3c7dde9771 | 4 | |
wuliqunyy | 0:fe3c7dde9771 | 5 | /*Digital outputs*/ |
wuliqunyy | 0:fe3c7dde9771 | 6 | DigitalOut led1(LED1); |
wuliqunyy | 0:fe3c7dde9771 | 7 | DigitalOut led2(LED2); |
wuliqunyy | 0:fe3c7dde9771 | 8 | DigitalOut led3(LED3); |
wuliqunyy | 0:fe3c7dde9771 | 9 | DigitalOut led4(LED4); |
wuliqunyy | 0:fe3c7dde9771 | 10 | DigitalOut fpga_rstb(p21); //p21 of MBED is connectted to p4 of the FPGA CMOD for 90415FPGA_EVB2 |
wuliqunyy | 0:fe3c7dde9771 | 11 | |
wuliqunyy | 0:fe3c7dde9771 | 12 | /*Creat serial port to coummunicate with pc*/ |
wuliqunyy | 0:fe3c7dde9771 | 13 | Serial pc(USBTX, USBRX); |
wuliqunyy | 0:fe3c7dde9771 | 14 | |
wuliqunyy | 0:fe3c7dde9771 | 15 | ///*Creat I2C master*/ |
wuliqunyy | 0:fe3c7dde9771 | 16 | I2C i2c_master(p9, p10); |
wuliqunyy | 0:fe3c7dde9771 | 17 | |
wuliqunyy | 0:fe3c7dde9771 | 18 | void serial_init(){ |
wuliqunyy | 0:fe3c7dde9771 | 19 | pc.format(8, SerialBase::None, 1); |
wuliqunyy | 0:fe3c7dde9771 | 20 | pc.baud(38400); |
wuliqunyy | 0:fe3c7dde9771 | 21 | } |
wuliqunyy | 0:fe3c7dde9771 | 22 | |
wuliqunyy | 0:fe3c7dde9771 | 23 | void i2c_init(){ |
wuliqunyy | 0:fe3c7dde9771 | 24 | i2c_master.frequency(350000); |
wuliqunyy | 0:fe3c7dde9771 | 25 | } |
wuliqunyy | 0:fe3c7dde9771 | 26 | |
wuliqunyy | 0:fe3c7dde9771 | 27 | void main_init(){ |
wuliqunyy | 0:fe3c7dde9771 | 28 | led1 = 1; |
wuliqunyy | 0:fe3c7dde9771 | 29 | led2 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 30 | led3 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 31 | led4 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 32 | |
wuliqunyy | 0:fe3c7dde9771 | 33 | fpga_rstb = 0; |
wuliqunyy | 0:fe3c7dde9771 | 34 | |
wuliqunyy | 0:fe3c7dde9771 | 35 | i2c_init(); |
wuliqunyy | 0:fe3c7dde9771 | 36 | serial_init(); |
wuliqunyy | 0:fe3c7dde9771 | 37 | |
wuliqunyy | 0:fe3c7dde9771 | 38 | i2c_master.start(); |
wuliqunyy | 0:fe3c7dde9771 | 39 | |
wuliqunyy | 0:fe3c7dde9771 | 40 | pc.printf("Mbed is ready!"); |
wuliqunyy | 0:fe3c7dde9771 | 41 | } |
wuliqunyy | 0:fe3c7dde9771 | 42 | |
wuliqunyy | 0:fe3c7dde9771 | 43 | /* Main function */ |
wuliqunyy | 0:fe3c7dde9771 | 44 | int main() { |
wuliqunyy | 0:fe3c7dde9771 | 45 | |
wuliqunyy | 1:47cc6952e346 | 46 | char i2cWriteTest[4] = {0x13, 0x8a, 0xac, 0x35}; |
wuliqunyy | 1:47cc6952e346 | 47 | char i2cReadTest[4] = {0x13, 0x8a, 0x00, 0x00}; |
wuliqunyy | 0:fe3c7dde9771 | 48 | int ack; |
wuliqunyy | 0:fe3c7dde9771 | 49 | |
wuliqunyy | 0:fe3c7dde9771 | 50 | main_init(); |
wuliqunyy | 0:fe3c7dde9771 | 51 | |
wuliqunyy | 0:fe3c7dde9771 | 52 | while (1) { |
wuliqunyy | 0:fe3c7dde9771 | 53 | char c = pc.getc(); |
wuliqunyy | 0:fe3c7dde9771 | 54 | if(c=='s'){ |
wuliqunyy | 0:fe3c7dde9771 | 55 | fpga_rstb = 0; //reset FPGA |
wuliqunyy | 0:fe3c7dde9771 | 56 | wait_ms(10); |
wuliqunyy | 0:fe3c7dde9771 | 57 | fpga_rstb = 1; //enable FPGA |
wuliqunyy | 0:fe3c7dde9771 | 58 | wait_ms(10); |
wuliqunyy | 0:fe3c7dde9771 | 59 | //i2c_keyEntry(i2c_master); |
wuliqunyy | 1:47cc6952e346 | 60 | ack+=i2c_word_write(i2c_master,i2cWriteTest); |
wuliqunyy | 0:fe3c7dde9771 | 61 | wait_ms(10); |
wuliqunyy | 1:47cc6952e346 | 62 | ack+=i2c_word_read(i2c_master,i2cReadTest); |
wuliqunyy | 0:fe3c7dde9771 | 63 | led1 = ack; |
wuliqunyy | 1:47cc6952e346 | 64 | pc.printf("d[0]=%2d\n",i2cReadTest[3]); |
wuliqunyy | 1:47cc6952e346 | 65 | pc.printf("d[1]=%2d\n",i2cReadTest[2]); |
wuliqunyy | 0:fe3c7dde9771 | 66 | } |
wuliqunyy | 0:fe3c7dde9771 | 67 | if(c=='t'){ |
wuliqunyy | 0:fe3c7dde9771 | 68 | fpga_rstb = 0; //disable FPGA |
wuliqunyy | 0:fe3c7dde9771 | 69 | led1 = 0; |
wuliqunyy | 0:fe3c7dde9771 | 70 | |
wuliqunyy | 0:fe3c7dde9771 | 71 | } |
wuliqunyy | 0:fe3c7dde9771 | 72 | } |
wuliqunyy | 0:fe3c7dde9771 | 73 | |
wuliqunyy | 0:fe3c7dde9771 | 74 | |
wuliqunyy | 0:fe3c7dde9771 | 75 | |
wuliqunyy | 0:fe3c7dde9771 | 76 | // fpga_rstb.write(1); |
wuliqunyy | 0:fe3c7dde9771 | 77 | // |
wuliqunyy | 0:fe3c7dde9771 | 78 | // wait_us(10000); //10ms |
wuliqunyy | 0:fe3c7dde9771 | 79 | // |
wuliqunyy | 0:fe3c7dde9771 | 80 | //// i2c_master.start(); |
wuliqunyy | 0:fe3c7dde9771 | 81 | //// wait_ms(200); |
wuliqunyy | 0:fe3c7dde9771 | 82 | //// i2c_master.stop(); |
wuliqunyy | 0:fe3c7dde9771 | 83 | // |
wuliqunyy | 0:fe3c7dde9771 | 84 | // ack+=i2c_keyEntry(i2c_master); |
wuliqunyy | 0:fe3c7dde9771 | 85 | // |
wuliqunyy | 0:fe3c7dde9771 | 86 | // //ack+=ctrPort_ReadActive(i2c_master); |
wuliqunyy | 0:fe3c7dde9771 | 87 | // buff[0] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 88 | // buff[1] = 0x30; |
wuliqunyy | 0:fe3c7dde9771 | 89 | // buff[2] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 90 | // buff[3] = 0x01; |
wuliqunyy | 0:fe3c7dde9771 | 91 | // |
wuliqunyy | 0:fe3c7dde9771 | 92 | // ack+=i2c_word_write(i2c_master, buff); |
wuliqunyy | 0:fe3c7dde9771 | 93 | // buff[0] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 94 | // buff[1] = 0x0A; |
wuliqunyy | 0:fe3c7dde9771 | 95 | // buff[2] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 96 | // buff[3] = 0x00; |
wuliqunyy | 0:fe3c7dde9771 | 97 | // |
wuliqunyy | 0:fe3c7dde9771 | 98 | // ack+=i2c_word_read(i2c_master, buff); |
wuliqunyy | 0:fe3c7dde9771 | 99 | // |
wuliqunyy | 0:fe3c7dde9771 | 100 | // wait_us(100); |
wuliqunyy | 0:fe3c7dde9771 | 101 | // |
wuliqunyy | 0:fe3c7dde9771 | 102 | // pc.printf("d[0]=%2d\n", buff[3]); |
wuliqunyy | 0:fe3c7dde9771 | 103 | // pc.printf("d[1]=%2d\n", buff[2]); |
wuliqunyy | 0:fe3c7dde9771 | 104 | // pc.printf("ack=%2d\n", ack); |
wuliqunyy | 0:fe3c7dde9771 | 105 | // pc.printf("endl\n"); |
wuliqunyy | 0:fe3c7dde9771 | 106 | // |
wuliqunyy | 0:fe3c7dde9771 | 107 | // |
wuliqunyy | 0:fe3c7dde9771 | 108 | // while (1) { |
wuliqunyy | 0:fe3c7dde9771 | 109 | // led1 = !led1; |
wuliqunyy | 0:fe3c7dde9771 | 110 | // wait(1); |
wuliqunyy | 0:fe3c7dde9771 | 111 | // } |
wuliqunyy | 0:fe3c7dde9771 | 112 | } |