Liangzhen Lai / Mbed 2 deprecated Orange_Ferrari_board_functional

Dependencies:   DDRO_Farrari mbed

Fork of DDRO_Farrari by Liangzhen Lai

Committer:
liangzhen
Date:
Mon Oct 07 22:58:19 2013 +0000
Revision:
0:84a8bcfbdec9
power sensor tested;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
liangzhen 0:84a8bcfbdec9 1 #include "board_test.h"
liangzhen 0:84a8bcfbdec9 2
liangzhen 0:84a8bcfbdec9 3
liangzhen 0:84a8bcfbdec9 4 void mem_test(JTAG &jtag)
liangzhen 0:84a8bcfbdec9 5 {
liangzhen 0:84a8bcfbdec9 6
liangzhen 0:84a8bcfbdec9 7 jtag.PowerupDAP();
liangzhen 0:84a8bcfbdec9 8 unsigned int base = 0x10000000;
liangzhen 0:84a8bcfbdec9 9 unsigned int size = 2000;
liangzhen 0:84a8bcfbdec9 10 unsigned int* data;
liangzhen 0:84a8bcfbdec9 11 data = new unsigned int[size];
liangzhen 0:84a8bcfbdec9 12
liangzhen 0:84a8bcfbdec9 13 for(unsigned int i=0; i<size; i++){
liangzhen 0:84a8bcfbdec9 14 data[i] = i;
liangzhen 0:84a8bcfbdec9 15 }
liangzhen 0:84a8bcfbdec9 16
liangzhen 0:84a8bcfbdec9 17 pc.printf("Performing memWrite\r\n");
liangzhen 0:84a8bcfbdec9 18 jtag.memWrite(base, data, size);
liangzhen 0:84a8bcfbdec9 19
liangzhen 0:84a8bcfbdec9 20 pc.printf("Checking memWrite\r\n");
liangzhen 0:84a8bcfbdec9 21 for(unsigned int i=0; i<size; i++){
liangzhen 0:84a8bcfbdec9 22 unsigned int d = jtag.readMemory(base + i*4);
liangzhen 0:84a8bcfbdec9 23 //pc.printf("MEM[%X] = %X\r\n", i, d);
liangzhen 0:84a8bcfbdec9 24 if(d != i){
liangzhen 0:84a8bcfbdec9 25 pc.printf("MEMERROR: MEM[%X] = %X\r\n", i, d);
liangzhen 0:84a8bcfbdec9 26 }
liangzhen 0:84a8bcfbdec9 27 }
liangzhen 0:84a8bcfbdec9 28
liangzhen 0:84a8bcfbdec9 29 jtag.writeMemory(base + 4*20, 0xdeadbeef);
liangzhen 0:84a8bcfbdec9 30
liangzhen 0:84a8bcfbdec9 31 pc.printf("Performing memRead\r\n");
liangzhen 0:84a8bcfbdec9 32 jtag.memRead(base, data, size, true, true);
liangzhen 0:84a8bcfbdec9 33
liangzhen 0:84a8bcfbdec9 34 pc.printf("Mem test done\r\n");
liangzhen 0:84a8bcfbdec9 35 delete data;
liangzhen 0:84a8bcfbdec9 36
liangzhen 0:84a8bcfbdec9 37 }
liangzhen 0:84a8bcfbdec9 38
liangzhen 0:84a8bcfbdec9 39 void lcd_test()
liangzhen 0:84a8bcfbdec9 40 {
liangzhen 0:84a8bcfbdec9 41
liangzhen 0:84a8bcfbdec9 42 lcd_default();
liangzhen 0:84a8bcfbdec9 43 wait(1);
liangzhen 0:84a8bcfbdec9 44
liangzhen 0:84a8bcfbdec9 45 lcd_printf("Initial Power On");
liangzhen 0:84a8bcfbdec9 46 wait(1);
liangzhen 0:84a8bcfbdec9 47 lcd_clear( );
liangzhen 0:84a8bcfbdec9 48 wait(1);
liangzhen 0:84a8bcfbdec9 49
liangzhen 0:84a8bcfbdec9 50 lcd_goto( LINE4_BEGIN );
liangzhen 0:84a8bcfbdec9 51 lcd_printf("Line 4");
liangzhen 0:84a8bcfbdec9 52 wait(1);
liangzhen 0:84a8bcfbdec9 53 lcd_goto( LINE2_BEGIN );
liangzhen 0:84a8bcfbdec9 54 lcd_printf("Line 2");
liangzhen 0:84a8bcfbdec9 55 wait(1);
liangzhen 0:84a8bcfbdec9 56
liangzhen 0:84a8bcfbdec9 57 lcd_clear_line( 4);
liangzhen 0:84a8bcfbdec9 58 lcd_home();
liangzhen 0:84a8bcfbdec9 59 lcd_printf("Line 1");
liangzhen 0:84a8bcfbdec9 60 lcd_clear();
liangzhen 0:84a8bcfbdec9 61 wait(1);
liangzhen 0:84a8bcfbdec9 62
liangzhen 0:84a8bcfbdec9 63 lcd_printf("ABCDEF");
liangzhen 0:84a8bcfbdec9 64 wait(1);
liangzhen 0:84a8bcfbdec9 65 lcd_backspace(); lcd_backspace(); lcd_backspace();
liangzhen 0:84a8bcfbdec9 66 wait(1);
liangzhen 0:84a8bcfbdec9 67 lcd_cursor_left(); lcd_cursor_left(); lcd_cursor_left();
liangzhen 0:84a8bcfbdec9 68 lcd_printf("def");
liangzhen 0:84a8bcfbdec9 69 wait(1);
liangzhen 0:84a8bcfbdec9 70 lcd_cursor_right(); lcd_cursor_right(); lcd_cursor_right();
liangzhen 0:84a8bcfbdec9 71 lcd_printf("abc");
liangzhen 0:84a8bcfbdec9 72 wait(1);
liangzhen 0:84a8bcfbdec9 73 lcd_clear();
liangzhen 0:84a8bcfbdec9 74 wait(1);
liangzhen 0:84a8bcfbdec9 75
liangzhen 0:84a8bcfbdec9 76 lcd_goto( LINE1_BEGIN ); lcd_printf("LINE1");
liangzhen 0:84a8bcfbdec9 77 lcd_goto( LINE2_BEGIN ); lcd_printf("LINE2");
liangzhen 0:84a8bcfbdec9 78 lcd_goto( LINE3_BEGIN ); lcd_printf("LINE3");
liangzhen 0:84a8bcfbdec9 79 lcd_goto( LINE4_BEGIN ); lcd_printf("LINE4");
liangzhen 0:84a8bcfbdec9 80 wait(1);
liangzhen 0:84a8bcfbdec9 81
liangzhen 0:84a8bcfbdec9 82 int i=0;
liangzhen 0:84a8bcfbdec9 83 while(1) {
liangzhen 0:84a8bcfbdec9 84 lcd_set_contrast( (5*i)%50 );
liangzhen 0:84a8bcfbdec9 85 lcd_backlight_level( i%8 );
liangzhen 0:84a8bcfbdec9 86
liangzhen 0:84a8bcfbdec9 87 lcd_shift_right(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 88 lcd_shift_right(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 89 lcd_shift_right(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 90 lcd_shift_right(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 91 lcd_shift_right(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 92 lcd_shift_right(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 93 lcd_shift_right(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 94
liangzhen 0:84a8bcfbdec9 95 lcd_shift_left(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 96 lcd_shift_left(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 97 lcd_shift_left(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 98 lcd_shift_left(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 99 lcd_shift_left(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 100 lcd_shift_left(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 101 lcd_shift_left(); wait_ms(50);
liangzhen 0:84a8bcfbdec9 102
liangzhen 0:84a8bcfbdec9 103 i++;
liangzhen 0:84a8bcfbdec9 104 wait_ms(100);
liangzhen 0:84a8bcfbdec9 105 }
liangzhen 0:84a8bcfbdec9 106 }
liangzhen 0:84a8bcfbdec9 107
liangzhen 0:84a8bcfbdec9 108
liangzhen 0:84a8bcfbdec9 109 void i2ctest(){
liangzhen 0:84a8bcfbdec9 110
liangzhen 0:84a8bcfbdec9 111 char data[4] = "abc";
liangzhen 0:84a8bcfbdec9 112 int A = 0;
liangzhen 0:84a8bcfbdec9 113 for (A = 0; A<=0xFF; A++) {
liangzhen 0:84a8bcfbdec9 114 if (lcd.write(A,data,3,false)==0) {
liangzhen 0:84a8bcfbdec9 115 pc.printf (" GOT LCD %X\r\n", A);
liangzhen 0:84a8bcfbdec9 116 }
liangzhen 0:84a8bcfbdec9 117 }
liangzhen 0:84a8bcfbdec9 118
liangzhen 0:84a8bcfbdec9 119 }
liangzhen 0:84a8bcfbdec9 120
liangzhen 0:84a8bcfbdec9 121 void analog_test()
liangzhen 0:84a8bcfbdec9 122 {
liangzhen 0:84a8bcfbdec9 123
liangzhen 0:84a8bcfbdec9 124 power_chan(ADVDD, 0.10);
liangzhen 0:84a8bcfbdec9 125 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 126 power_chan(PADVDD, 0.15);
liangzhen 0:84a8bcfbdec9 127 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 128 power_chan(DVDD, 0.20);
liangzhen 0:84a8bcfbdec9 129 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 130 power_chan(ADVDD2, 0.25);
liangzhen 0:84a8bcfbdec9 131 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 132 power_chan(COREVDD, 0.30);
liangzhen 0:84a8bcfbdec9 133 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 134 power_chan(DVDD2, 0.35);
liangzhen 0:84a8bcfbdec9 135 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 136 power_chan(SENSORVDD, 0.40);
liangzhen 0:84a8bcfbdec9 137 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 138 power_chan(SENSORLOWVDD, 0.45);
liangzhen 0:84a8bcfbdec9 139 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 140 power_chan(SENSORSTRESSVDD, 0.50);
liangzhen 0:84a8bcfbdec9 141 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 142 power_chan(CLOCKVDD, 0.55);
liangzhen 0:84a8bcfbdec9 143 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 144 power_chan(MEM1VDD, 0.60);
liangzhen 0:84a8bcfbdec9 145 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 146 power_chan(MEM2VDD, 0.65);
liangzhen 0:84a8bcfbdec9 147 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 148 power_chan(PLLAVDD, 0.70);
liangzhen 0:84a8bcfbdec9 149 wait(POWER_UP_TIME);
liangzhen 0:84a8bcfbdec9 150 power_chan(RING_OSC_NBIAS, 0.75);
liangzhen 0:84a8bcfbdec9 151 power_indicator = 1;
liangzhen 0:84a8bcfbdec9 152 }
liangzhen 0:84a8bcfbdec9 153
liangzhen 0:84a8bcfbdec9 154 void scan_set_test()
liangzhen 0:84a8bcfbdec9 155 {
liangzhen 0:84a8bcfbdec9 156
liangzhen 0:84a8bcfbdec9 157 rotate_chain();
liangzhen 0:84a8bcfbdec9 158 rotate_chain();
liangzhen 0:84a8bcfbdec9 159 int g = get_scan_bits("PLL_LFTUNE");
liangzhen 0:84a8bcfbdec9 160 pc.printf("initially %d\r\n", g); // should be 0
liangzhen 0:84a8bcfbdec9 161
liangzhen 0:84a8bcfbdec9 162 set_scan_bits("PLL_LFTUNE", 27);
liangzhen 0:84a8bcfbdec9 163 rotate_chain();
liangzhen 0:84a8bcfbdec9 164 load_chip();
liangzhen 0:84a8bcfbdec9 165
liangzhen 0:84a8bcfbdec9 166 //load_chain();
liangzhen 0:84a8bcfbdec9 167 rotate_chain();
liangzhen 0:84a8bcfbdec9 168
liangzhen 0:84a8bcfbdec9 169
liangzhen 0:84a8bcfbdec9 170 g = get_scan_bits("PLL_LFTUNE");
liangzhen 0:84a8bcfbdec9 171 pc.printf("then %d\r\n", g); // should be 27
liangzhen 0:84a8bcfbdec9 172
liangzhen 0:84a8bcfbdec9 173 pc.printf("The 13th line of range is %d\r\n", get_binline_by_num("/local/Prange.txt", 13));
liangzhen 0:84a8bcfbdec9 174
liangzhen 0:84a8bcfbdec9 175 }
liangzhen 0:84a8bcfbdec9 176
liangzhen 0:84a8bcfbdec9 177 void jtag_test()
liangzhen 0:84a8bcfbdec9 178 {
liangzhen 0:84a8bcfbdec9 179 JTAG jtag;
liangzhen 0:84a8bcfbdec9 180 for(char ii=0x0; ii<=0xf; ii++){
liangzhen 0:84a8bcfbdec9 181 jtag.setIR(ii);
liangzhen 0:84a8bcfbdec9 182
liangzhen 0:84a8bcfbdec9 183 //jtag.leaveState();
liangzhen 0:84a8bcfbdec9 184 jtag.setState('d');
liangzhen 0:84a8bcfbdec9 185
liangzhen 0:84a8bcfbdec9 186 int rett = jtag.shiftBits(0xdeadbeef >> 1, 32);
liangzhen 0:84a8bcfbdec9 187 jtag.leaveState();
liangzhen 0:84a8bcfbdec9 188 pc.printf("ii %x, rett %x\r\n", ii, rett);
liangzhen 0:84a8bcfbdec9 189
liangzhen 0:84a8bcfbdec9 190 }
liangzhen 0:84a8bcfbdec9 191
liangzhen 0:84a8bcfbdec9 192 }
liangzhen 0:84a8bcfbdec9 193 void pll_test()
liangzhen 0:84a8bcfbdec9 194 {
liangzhen 0:84a8bcfbdec9 195 scan_pll(1, 1, 126, 1, 12, 32);
liangzhen 0:84a8bcfbdec9 196 unsigned long long freq = calc_pll_freqs(1, 1, 126, 1, 12, 32);
liangzhen 0:84a8bcfbdec9 197 freq = freq / 1000000; // in MHz
liangzhen 0:84a8bcfbdec9 198 int fMHz = freq;
liangzhen 0:84a8bcfbdec9 199
liangzhen 0:84a8bcfbdec9 200 pc.printf("pll freq: %d MHz", fMHz);
liangzhen 0:84a8bcfbdec9 201
liangzhen 0:84a8bcfbdec9 202 set_scan_bits("use_scan", 1);
liangzhen 0:84a8bcfbdec9 203 set_scan_bits("PLL_RESET", 1);
liangzhen 0:84a8bcfbdec9 204 set_scan_bits("intclk_source", 2);
liangzhen 0:84a8bcfbdec9 205 set_scan_bits("extclk_source", 1);
liangzhen 0:84a8bcfbdec9 206 set_scan_bits("ext_div_by", 10);
liangzhen 0:84a8bcfbdec9 207 rotate_chain();
liangzhen 0:84a8bcfbdec9 208 load_chip();
liangzhen 0:84a8bcfbdec9 209
liangzhen 0:84a8bcfbdec9 210 set_scan_bits("PLL_RESET", 0);
liangzhen 0:84a8bcfbdec9 211 rotate_chain();
liangzhen 0:84a8bcfbdec9 212 load_chip();
liangzhen 0:84a8bcfbdec9 213
liangzhen 0:84a8bcfbdec9 214 PORESETn = 1;
liangzhen 0:84a8bcfbdec9 215 CORERESETn = 1;
liangzhen 0:84a8bcfbdec9 216 set_scan_bits("RESET_scan", 1);
liangzhen 0:84a8bcfbdec9 217 set_scan_bits("CORERESET_scan", 1);
liangzhen 0:84a8bcfbdec9 218
liangzhen 0:84a8bcfbdec9 219 }