Liqun Wu / Mbed 2 deprecated 90418_mbed_controller

Dependencies:   mbed

Committer:
wuliqunyy
Date:
Mon Jan 17 13:20:09 2022 +0000
Revision:
0:be95bfb06686
a working non_flat + adc_didt for ehp regulation version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wuliqunyy 0:be95bfb06686 1 #include "mbed.h"
wuliqunyy 0:be95bfb06686 2 #include "main_init.h"
wuliqunyy 0:be95bfb06686 3 #include "i2c_mbed_fpga.h"
wuliqunyy 0:be95bfb06686 4 #include "uart_mbed.h"
wuliqunyy 0:be95bfb06686 5 #include "scpi-def.h"
wuliqunyy 0:be95bfb06686 6
wuliqunyy 0:be95bfb06686 7 #define RAM_END_ADDR 0x4B
wuliqunyy 0:be95bfb06686 8 //#define HAVE_STDBOOL
wuliqunyy 0:be95bfb06686 9
wuliqunyy 0:be95bfb06686 10 i2c_mbed_fpga i2c;
wuliqunyy 0:be95bfb06686 11
wuliqunyy 0:be95bfb06686 12 DigitalOut led1(LED1);
wuliqunyy 0:be95bfb06686 13 DigitalOut led2(LED2);
wuliqunyy 0:be95bfb06686 14 DigitalOut led3(LED3);
wuliqunyy 0:be95bfb06686 15 DigitalOut led4(LED4);
wuliqunyy 0:be95bfb06686 16 DigitalOut fpga_rstb(p27); //On FPGA PCB with red marked version ID it should be p20, (p27 of MBED is connected to p22 of the FPGA CMOD for 90415FPGA_EVB2)
wuliqunyy 0:be95bfb06686 17 //DigitalIn TimerIn(p29); //p29 shall be input pin
wuliqunyy 0:be95bfb06686 18
wuliqunyy 0:be95bfb06686 19 /* Main function */
wuliqunyy 0:be95bfb06686 20 int main() {
wuliqunyy 0:be95bfb06686 21 char i2cBuffer[3];
wuliqunyy 0:be95bfb06686 22 char i2cTestPassFlag = 0;
wuliqunyy 0:be95bfb06686 23 // char i2cRamDumpFlag = 0;
wuliqunyy 0:be95bfb06686 24 char i2cTestPulseDebugFlag = 0;
wuliqunyy 0:be95bfb06686 25
wuliqunyy 0:be95bfb06686 26 fpga_rstb = 1;
wuliqunyy 0:be95bfb06686 27 configure_scpi();
wuliqunyy 0:be95bfb06686 28
wuliqunyy 0:be95bfb06686 29 if(i2cTestPulseDebugFlag == 1) {
wuliqunyy 0:be95bfb06686 30 i2c.i2c_mlx_mode_entry();
wuliqunyy 0:be95bfb06686 31 wait_us(1000);
wuliqunyy 0:be95bfb06686 32 *(i2cBuffer+0) = (char)(I2C_STATUS)& 0xff;
wuliqunyy 0:be95bfb06686 33 i2c.i2c_word_read(i2cBuffer);
wuliqunyy 0:be95bfb06686 34 uart_print(i2cBuffer);
wuliqunyy 0:be95bfb06686 35
wuliqunyy 0:be95bfb06686 36 if( i2cBuffer[2] == 0x0C ){
wuliqunyy 0:be95bfb06686 37 uart_I2C_test_pass();
wuliqunyy 0:be95bfb06686 38 i2cTestPassFlag = 1;
wuliqunyy 0:be95bfb06686 39 led4 = 0;
wuliqunyy 0:be95bfb06686 40 }
wuliqunyy 0:be95bfb06686 41 else {
wuliqunyy 0:be95bfb06686 42 uart_I2C_test_fail();
wuliqunyy 0:be95bfb06686 43 i2cTestPassFlag = 0;
wuliqunyy 0:be95bfb06686 44 led4 = 1;
wuliqunyy 0:be95bfb06686 45 }
wuliqunyy 0:be95bfb06686 46
wuliqunyy 0:be95bfb06686 47 if(i2cTestPassFlag == 1){
wuliqunyy 0:be95bfb06686 48 i2c.i2c_enable_pules_debug_mode(1);
wuliqunyy 0:be95bfb06686 49 wait_us(1000);
wuliqunyy 0:be95bfb06686 50 }
wuliqunyy 0:be95bfb06686 51 }
wuliqunyy 0:be95bfb06686 52
wuliqunyy 0:be95bfb06686 53 if(i2cTestPulseDebugFlag == 1) {
wuliqunyy 0:be95bfb06686 54 wait_us(100000);
wuliqunyy 0:be95bfb06686 55 char i;
wuliqunyy 0:be95bfb06686 56 for(i=0xEA;i<=0xEF;i++) {
wuliqunyy 0:be95bfb06686 57 *(i2cBuffer+0) = i;
wuliqunyy 0:be95bfb06686 58 i2c.i2c_word_read(i2cBuffer);
wuliqunyy 0:be95bfb06686 59 uart_print(i2cBuffer);
wuliqunyy 0:be95bfb06686 60 wait_us(300000);
wuliqunyy 0:be95bfb06686 61 }
wuliqunyy 0:be95bfb06686 62 uart_ram_dump_finish();
wuliqunyy 0:be95bfb06686 63 }
wuliqunyy 0:be95bfb06686 64 /*enter infinite loop, motor should be running*/
wuliqunyy 0:be95bfb06686 65
wuliqunyy 0:be95bfb06686 66 while (1) {
wuliqunyy 0:be95bfb06686 67 char buffer[50];
wuliqunyy 0:be95bfb06686 68 uart_read(buffer);
wuliqunyy 0:be95bfb06686 69 strcat(buffer, "\n");
wuliqunyy 0:be95bfb06686 70 SCPI_Input(&scpi_context, buffer, strlen(buffer));
wuliqunyy 0:be95bfb06686 71
wuliqunyy 0:be95bfb06686 72 }
wuliqunyy 0:be95bfb06686 73
wuliqunyy 0:be95bfb06686 74 }