Fork

Dependencies:   mbed libscpi

Committer:
wuliqunyy
Date:
Fri Dec 04 14:23:17 2020 +0000
Revision:
0:fe3c7dde9771
Child:
1:47cc6952e346
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 //#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 0:fe3c7dde9771 46 char i2cTest[4] = {0x13, 0x8a, 0xac, 0x35};
wuliqunyy 0:fe3c7dde9771 47 char buff[4];
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 0:fe3c7dde9771 60 ack+=i2c_word_write(i2c_master,i2cTest);
wuliqunyy 0:fe3c7dde9771 61 wait_ms(10);
wuliqunyy 0:fe3c7dde9771 62 ack+=i2c_word_read(i2c_master,buff);
wuliqunyy 0:fe3c7dde9771 63 led1 = ack;
wuliqunyy 0:fe3c7dde9771 64 pc.printf(buff);
wuliqunyy 0:fe3c7dde9771 65 }
wuliqunyy 0:fe3c7dde9771 66 if(c=='t'){
wuliqunyy 0:fe3c7dde9771 67 fpga_rstb = 0; //disable FPGA
wuliqunyy 0:fe3c7dde9771 68 led1 = 0;
wuliqunyy 0:fe3c7dde9771 69
wuliqunyy 0:fe3c7dde9771 70 }
wuliqunyy 0:fe3c7dde9771 71 }
wuliqunyy 0:fe3c7dde9771 72
wuliqunyy 0:fe3c7dde9771 73
wuliqunyy 0:fe3c7dde9771 74
wuliqunyy 0:fe3c7dde9771 75 // fpga_rstb.write(1);
wuliqunyy 0:fe3c7dde9771 76 //
wuliqunyy 0:fe3c7dde9771 77 // wait_us(10000); //10ms
wuliqunyy 0:fe3c7dde9771 78 //
wuliqunyy 0:fe3c7dde9771 79 //// i2c_master.start();
wuliqunyy 0:fe3c7dde9771 80 //// wait_ms(200);
wuliqunyy 0:fe3c7dde9771 81 //// i2c_master.stop();
wuliqunyy 0:fe3c7dde9771 82 //
wuliqunyy 0:fe3c7dde9771 83 // ack+=i2c_keyEntry(i2c_master);
wuliqunyy 0:fe3c7dde9771 84 //
wuliqunyy 0:fe3c7dde9771 85 // //ack+=ctrPort_ReadActive(i2c_master);
wuliqunyy 0:fe3c7dde9771 86 // buff[0] = 0x00;
wuliqunyy 0:fe3c7dde9771 87 // buff[1] = 0x30;
wuliqunyy 0:fe3c7dde9771 88 // buff[2] = 0x00;
wuliqunyy 0:fe3c7dde9771 89 // buff[3] = 0x01;
wuliqunyy 0:fe3c7dde9771 90 //
wuliqunyy 0:fe3c7dde9771 91 // ack+=i2c_word_write(i2c_master, buff);
wuliqunyy 0:fe3c7dde9771 92 // buff[0] = 0x00;
wuliqunyy 0:fe3c7dde9771 93 // buff[1] = 0x0A;
wuliqunyy 0:fe3c7dde9771 94 // buff[2] = 0x00;
wuliqunyy 0:fe3c7dde9771 95 // buff[3] = 0x00;
wuliqunyy 0:fe3c7dde9771 96 //
wuliqunyy 0:fe3c7dde9771 97 // ack+=i2c_word_read(i2c_master, buff);
wuliqunyy 0:fe3c7dde9771 98 //
wuliqunyy 0:fe3c7dde9771 99 // wait_us(100);
wuliqunyy 0:fe3c7dde9771 100 //
wuliqunyy 0:fe3c7dde9771 101 // pc.printf("d[0]=%2d\n", buff[3]);
wuliqunyy 0:fe3c7dde9771 102 // pc.printf("d[1]=%2d\n", buff[2]);
wuliqunyy 0:fe3c7dde9771 103 // pc.printf("ack=%2d\n", ack);
wuliqunyy 0:fe3c7dde9771 104 // pc.printf("endl\n");
wuliqunyy 0:fe3c7dde9771 105 //
wuliqunyy 0:fe3c7dde9771 106 //
wuliqunyy 0:fe3c7dde9771 107 // while (1) {
wuliqunyy 0:fe3c7dde9771 108 // led1 = !led1;
wuliqunyy 0:fe3c7dde9771 109 // wait(1);
wuliqunyy 0:fe3c7dde9771 110 // }
wuliqunyy 0:fe3c7dde9771 111 }