Fork

Dependencies:   mbed libscpi

Committer:
wuliqunyy
Date:
Tue Dec 08 13:53:10 2020 +0000
Revision:
2:9bdcd2c966de
Parent:
1:47cc6952e346
Child:
3:557d5725b1bb
running motor

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 2:9bdcd2c966de 24 i2c_master.frequency(35000);
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 2:9bdcd2c966de 48 char i2cStartMotor[4] = {0x13, 0xa4, 0xca, 0xfe}; //Start motor to skip the 1s
wuliqunyy 2:9bdcd2c966de 49 char i2cPositionPulseSetup[4] = {0x13, 0x82, 0xc6, 0x00}; //Start motor to skip the 1s
wuliqunyy 2:9bdcd2c966de 50 char i2cStartUpRead[4] = {0x13, 0x84, 0x00, 0x00}; //Start motor to skip the 1s
wuliqunyy 2:9bdcd2c966de 51
wuliqunyy 0:fe3c7dde9771 52 int ack;
wuliqunyy 0:fe3c7dde9771 53
wuliqunyy 0:fe3c7dde9771 54 main_init();
wuliqunyy 0:fe3c7dde9771 55
wuliqunyy 0:fe3c7dde9771 56 while (1) {
wuliqunyy 0:fe3c7dde9771 57 char c = pc.getc();
wuliqunyy 0:fe3c7dde9771 58 if(c=='s'){
wuliqunyy 0:fe3c7dde9771 59 fpga_rstb = 0; //reset FPGA
wuliqunyy 2:9bdcd2c966de 60 wait_ms(100);
wuliqunyy 0:fe3c7dde9771 61 fpga_rstb = 1; //enable FPGA
wuliqunyy 0:fe3c7dde9771 62 wait_ms(10);
wuliqunyy 0:fe3c7dde9771 63 //i2c_keyEntry(i2c_master);
wuliqunyy 2:9bdcd2c966de 64 ack+=i2c_word_write(i2c_master,i2cPositionPulseSetup);
wuliqunyy 2:9bdcd2c966de 65 wait_ms(10);
wuliqunyy 2:9bdcd2c966de 66 ack+=i2c_word_write(i2c_master,i2cStartMotor);
wuliqunyy 0:fe3c7dde9771 67 wait_ms(10);
wuliqunyy 2:9bdcd2c966de 68 //ack+=i2c_word_read(i2c_master,i2cStartUpRead);
wuliqunyy 0:fe3c7dde9771 69 led1 = ack;
wuliqunyy 2:9bdcd2c966de 70 //pc.printf("d[0]=%2d\n",i2cStartUpRead[3]);
wuliqunyy 2:9bdcd2c966de 71 //pc.printf("d[1]=%2d\n",i2cStartUpRead[2]);
wuliqunyy 0:fe3c7dde9771 72 }
wuliqunyy 0:fe3c7dde9771 73 if(c=='t'){
wuliqunyy 0:fe3c7dde9771 74 fpga_rstb = 0; //disable FPGA
wuliqunyy 0:fe3c7dde9771 75 led1 = 0;
wuliqunyy 0:fe3c7dde9771 76
wuliqunyy 0:fe3c7dde9771 77 }
wuliqunyy 0:fe3c7dde9771 78 }
wuliqunyy 0:fe3c7dde9771 79
wuliqunyy 0:fe3c7dde9771 80
wuliqunyy 0:fe3c7dde9771 81
wuliqunyy 0:fe3c7dde9771 82 // fpga_rstb.write(1);
wuliqunyy 0:fe3c7dde9771 83 //
wuliqunyy 0:fe3c7dde9771 84 // wait_us(10000); //10ms
wuliqunyy 0:fe3c7dde9771 85 //
wuliqunyy 0:fe3c7dde9771 86 //// i2c_master.start();
wuliqunyy 0:fe3c7dde9771 87 //// wait_ms(200);
wuliqunyy 0:fe3c7dde9771 88 //// i2c_master.stop();
wuliqunyy 0:fe3c7dde9771 89 //
wuliqunyy 0:fe3c7dde9771 90 // ack+=i2c_keyEntry(i2c_master);
wuliqunyy 0:fe3c7dde9771 91 //
wuliqunyy 0:fe3c7dde9771 92 // //ack+=ctrPort_ReadActive(i2c_master);
wuliqunyy 0:fe3c7dde9771 93 // buff[0] = 0x00;
wuliqunyy 0:fe3c7dde9771 94 // buff[1] = 0x30;
wuliqunyy 0:fe3c7dde9771 95 // buff[2] = 0x00;
wuliqunyy 0:fe3c7dde9771 96 // buff[3] = 0x01;
wuliqunyy 0:fe3c7dde9771 97 //
wuliqunyy 0:fe3c7dde9771 98 // ack+=i2c_word_write(i2c_master, buff);
wuliqunyy 0:fe3c7dde9771 99 // buff[0] = 0x00;
wuliqunyy 0:fe3c7dde9771 100 // buff[1] = 0x0A;
wuliqunyy 0:fe3c7dde9771 101 // buff[2] = 0x00;
wuliqunyy 0:fe3c7dde9771 102 // buff[3] = 0x00;
wuliqunyy 0:fe3c7dde9771 103 //
wuliqunyy 0:fe3c7dde9771 104 // ack+=i2c_word_read(i2c_master, buff);
wuliqunyy 0:fe3c7dde9771 105 //
wuliqunyy 0:fe3c7dde9771 106 // wait_us(100);
wuliqunyy 0:fe3c7dde9771 107 //
wuliqunyy 0:fe3c7dde9771 108 // pc.printf("d[0]=%2d\n", buff[3]);
wuliqunyy 0:fe3c7dde9771 109 // pc.printf("d[1]=%2d\n", buff[2]);
wuliqunyy 0:fe3c7dde9771 110 // pc.printf("ack=%2d\n", ack);
wuliqunyy 0:fe3c7dde9771 111 // pc.printf("endl\n");
wuliqunyy 0:fe3c7dde9771 112 //
wuliqunyy 0:fe3c7dde9771 113 //
wuliqunyy 0:fe3c7dde9771 114 // while (1) {
wuliqunyy 0:fe3c7dde9771 115 // led1 = !led1;
wuliqunyy 0:fe3c7dde9771 116 // wait(1);
wuliqunyy 0:fe3c7dde9771 117 // }
wuliqunyy 0:fe3c7dde9771 118 }