FormazioneSitael / Mbed 2 deprecated I2C_PASSED

Dependencies:   mbed

Committer:
jjantoine
Date:
Fri Dec 21 15:38:58 2018 +0000
Revision:
0:8447350292ab
I2C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jjantoine 0:8447350292ab 1 #include "mbed.h"
jjantoine 0:8447350292ab 2 #include "TYPE_Def.h"
jjantoine 0:8447350292ab 3 #include "CRC32BIT_LOOKUP_Ext.h"
jjantoine 0:8447350292ab 4
jjantoine 0:8447350292ab 5
jjantoine 0:8447350292ab 6 #define add (0x22)
jjantoine 0:8447350292ab 7 #define idstr (0x14)
jjantoine 0:8447350292ab 8 #define idspr (0x16)
jjantoine 0:8447350292ab 9
jjantoine 0:8447350292ab 10
jjantoine 0:8447350292ab 11 I2C i2c1(I2C_SDA, I2C_SCL);
jjantoine 0:8447350292ab 12 Serial pc(USBTX, USBRX); // tx, rx
jjantoine 0:8447350292ab 13 DigitalOut myled(LED2);
jjantoine 0:8447350292ab 14 DigitalOut pin(D12);
jjantoine 0:8447350292ab 15
jjantoine 0:8447350292ab 16 UINT32_T crc;
jjantoine 0:8447350292ab 17 ERROR_T ERROR_Value;
jjantoine 0:8447350292ab 18 CRC32BIT_LOOKUP_TS _Crc32Table_TGP_DUT;
jjantoine 0:8447350292ab 19 BYTE_T vettore[13];
jjantoine 0:8447350292ab 20 char crcchar[4];
jjantoine 0:8447350292ab 21
jjantoine 0:8447350292ab 22 int i,j,n;
jjantoine 0:8447350292ab 23
jjantoine 0:8447350292ab 24 char UINT32_PacketSize [4];
jjantoine 0:8447350292ab 25 char ENUM_Packet_ID;
jjantoine 0:8447350292ab 26 char UINT16_PacketCounter [2];
jjantoine 0:8447350292ab 27 char UINT32_Timestamp [4];
jjantoine 0:8447350292ab 28 char UINT16_PortNumber [2];
jjantoine 0:8447350292ab 29 char UINT32_BaudRate [4];
jjantoine 0:8447350292ab 30 char UINT32_CRC [4];
jjantoine 0:8447350292ab 31
jjantoine 0:8447350292ab 32 int hz;
jjantoine 0:8447350292ab 33 int ackr;
jjantoine 0:8447350292ab 34 int ackw;
jjantoine 0:8447350292ab 35
jjantoine 0:8447350292ab 36 char packetsize[4] = {0x00 ,0x00 , 0x00 , 0x11};
jjantoine 0:8447350292ab 37
jjantoine 0:8447350292ab 38 void crc_cal();
jjantoine 0:8447350292ab 39 void TGP_CMD();
jjantoine 0:8447350292ab 40 void TGP_START_READ_ACK();
jjantoine 0:8447350292ab 41 void TGP_STOP_READ_ACK();
jjantoine 0:8447350292ab 42 void TGP_START_WRITE_ACK();
jjantoine 0:8447350292ab 43 void TGP_STOP_WRITE_ACK();
jjantoine 0:8447350292ab 44
jjantoine 0:8447350292ab 45 char data;
jjantoine 0:8447350292ab 46 char dataout;
jjantoine 0:8447350292ab 47
jjantoine 0:8447350292ab 48 int main()
jjantoine 0:8447350292ab 49 {
jjantoine 0:8447350292ab 50 pin = 0;
jjantoine 0:8447350292ab 51
jjantoine 0:8447350292ab 52 ENUM_Packet_ID = 0;
jjantoine 0:8447350292ab 53 data = 0;
jjantoine 0:8447350292ab 54 dataout = 0;
jjantoine 0:8447350292ab 55
jjantoine 0:8447350292ab 56
jjantoine 0:8447350292ab 57 ackr = 1;
jjantoine 0:8447350292ab 58 ackw = 1;
jjantoine 0:8447350292ab 59
jjantoine 0:8447350292ab 60 pc.attach(&TGP_CMD,Serial::RxIrq);
jjantoine 0:8447350292ab 61
jjantoine 0:8447350292ab 62 j=0;
jjantoine 0:8447350292ab 63 n=0;
jjantoine 0:8447350292ab 64
jjantoine 0:8447350292ab 65
jjantoine 0:8447350292ab 66
jjantoine 0:8447350292ab 67 }
jjantoine 0:8447350292ab 68
jjantoine 0:8447350292ab 69 void crc_cal()
jjantoine 0:8447350292ab 70 {
jjantoine 0:8447350292ab 71
jjantoine 0:8447350292ab 72 //def vettore
jjantoine 0:8447350292ab 73 j=0;
jjantoine 0:8447350292ab 74 for(i=0; i<4; i++){
jjantoine 0:8447350292ab 75 vettore[j] = packetsize[i];
jjantoine 0:8447350292ab 76 j++;
jjantoine 0:8447350292ab 77 }
jjantoine 0:8447350292ab 78
jjantoine 0:8447350292ab 79 vettore[j] = ENUM_Packet_ID+1;
jjantoine 0:8447350292ab 80 j++;
jjantoine 0:8447350292ab 81
jjantoine 0:8447350292ab 82 for(i=0; i<2; i++){
jjantoine 0:8447350292ab 83 vettore[j] = UINT16_PacketCounter[i];
jjantoine 0:8447350292ab 84 j++;
jjantoine 0:8447350292ab 85 }
jjantoine 0:8447350292ab 86
jjantoine 0:8447350292ab 87 for(i=0; i<4; i++){
jjantoine 0:8447350292ab 88 vettore[j] = UINT32_Timestamp[i];
jjantoine 0:8447350292ab 89 j++;
jjantoine 0:8447350292ab 90 }
jjantoine 0:8447350292ab 91
jjantoine 0:8447350292ab 92 for(i=0;i<2;i++)
jjantoine 0:8447350292ab 93 {
jjantoine 0:8447350292ab 94 vettore[j] = UINT16_PortNumber[i];
jjantoine 0:8447350292ab 95 j++;
jjantoine 0:8447350292ab 96 }
jjantoine 0:8447350292ab 97
jjantoine 0:8447350292ab 98
jjantoine 0:8447350292ab 99 _Crc32Table_TGP_DUT.UINT32_Poly = 0xE7994FEB;
jjantoine 0:8447350292ab 100 _Crc32Table_TGP_DUT.UINT32_Init = 0xFFFFFFFF;
jjantoine 0:8447350292ab 101 _Crc32Table_TGP_DUT.BOOL_RefIn = FALSE;
jjantoine 0:8447350292ab 102 _Crc32Table_TGP_DUT.BOOL_RefOut = FALSE;
jjantoine 0:8447350292ab 103 _Crc32Table_TGP_DUT.UINT32_XorOut = 0x00000000;
jjantoine 0:8447350292ab 104
jjantoine 0:8447350292ab 105 /* Inizializzazione della tabella */
jjantoine 0:8447350292ab 106 ERROR_Value = CRC32BIT_LOOKUP_Init(&_Crc32Table_TGP_DUT);
jjantoine 0:8447350292ab 107
jjantoine 0:8447350292ab 108 crc = CRC32BIT_LOOKUP_Compute(vettore,13,&_Crc32Table_TGP_DUT);
jjantoine 0:8447350292ab 109
jjantoine 0:8447350292ab 110 crcchar[0] = (crc >> 24) & 0xFF;
jjantoine 0:8447350292ab 111 crcchar[1] = (crc >> 16) & 0xFF;
jjantoine 0:8447350292ab 112 crcchar[2] = (crc >> 8) & 0xFF;
jjantoine 0:8447350292ab 113 crcchar[3] = crc & 0xFF;
jjantoine 0:8447350292ab 114
jjantoine 0:8447350292ab 115 }
jjantoine 0:8447350292ab 116
jjantoine 0:8447350292ab 117 void TGP_CMD()
jjantoine 0:8447350292ab 118 {
jjantoine 0:8447350292ab 119 myled = 0;
jjantoine 0:8447350292ab 120
jjantoine 0:8447350292ab 121 for(i=0; i<4; i++)
jjantoine 0:8447350292ab 122 {
jjantoine 0:8447350292ab 123 UINT32_PacketSize[i] = pc.getc();
jjantoine 0:8447350292ab 124 }
jjantoine 0:8447350292ab 125
jjantoine 0:8447350292ab 126 ENUM_Packet_ID = pc.getc();
jjantoine 0:8447350292ab 127
jjantoine 0:8447350292ab 128 if(ENUM_Packet_ID == idstr)
jjantoine 0:8447350292ab 129 {
jjantoine 0:8447350292ab 130 for(i=0; i<2; i++){
jjantoine 0:8447350292ab 131 UINT16_PacketCounter[i]=pc.getc();
jjantoine 0:8447350292ab 132 }
jjantoine 0:8447350292ab 133
jjantoine 0:8447350292ab 134 for(i=0; i<4; i++){
jjantoine 0:8447350292ab 135 UINT32_Timestamp[i]=pc.getc();
jjantoine 0:8447350292ab 136 }
jjantoine 0:8447350292ab 137
jjantoine 0:8447350292ab 138 for(i=0; i<2; i++){
jjantoine 0:8447350292ab 139 UINT16_PortNumber[i]=pc.getc();
jjantoine 0:8447350292ab 140 }
jjantoine 0:8447350292ab 141
jjantoine 0:8447350292ab 142 for(i=0; i<4; i++){
jjantoine 0:8447350292ab 143 UINT32_BaudRate[i]=pc.getc();
jjantoine 0:8447350292ab 144 }
jjantoine 0:8447350292ab 145
jjantoine 0:8447350292ab 146 for(i=0; i<4; i++){
jjantoine 0:8447350292ab 147 UINT32_CRC[i]=pc.getc();
jjantoine 0:8447350292ab 148 }
jjantoine 0:8447350292ab 149
jjantoine 0:8447350292ab 150 myled = 1;
jjantoine 0:8447350292ab 151
jjantoine 0:8447350292ab 152 TGP_START_READ_ACK();
jjantoine 0:8447350292ab 153
jjantoine 0:8447350292ab 154 }
jjantoine 0:8447350292ab 155 else if(ENUM_Packet_ID == idspr)
jjantoine 0:8447350292ab 156 {
jjantoine 0:8447350292ab 157 for(i=0; i<2; i++){
jjantoine 0:8447350292ab 158 UINT16_PacketCounter[i]=pc.getc();
jjantoine 0:8447350292ab 159 }
jjantoine 0:8447350292ab 160
jjantoine 0:8447350292ab 161 for(i=0; i<4; i++){
jjantoine 0:8447350292ab 162 UINT32_Timestamp[i]=pc.getc();
jjantoine 0:8447350292ab 163 }
jjantoine 0:8447350292ab 164
jjantoine 0:8447350292ab 165 for(i=0; i<2; i++){
jjantoine 0:8447350292ab 166 UINT16_PortNumber[i]=pc.getc();
jjantoine 0:8447350292ab 167 }
jjantoine 0:8447350292ab 168
jjantoine 0:8447350292ab 169 for(i=0; i<4; i++){
jjantoine 0:8447350292ab 170 UINT32_CRC[i]=pc.getc();
jjantoine 0:8447350292ab 171 }
jjantoine 0:8447350292ab 172
jjantoine 0:8447350292ab 173 myled = 1;
jjantoine 0:8447350292ab 174
jjantoine 0:8447350292ab 175 TGP_STOP_READ_ACK();
jjantoine 0:8447350292ab 176
jjantoine 0:8447350292ab 177 }
jjantoine 0:8447350292ab 178
jjantoine 0:8447350292ab 179 else
jjantoine 0:8447350292ab 180 {
jjantoine 0:8447350292ab 181 while(1)
jjantoine 0:8447350292ab 182 {
jjantoine 0:8447350292ab 183 myled = 1;
jjantoine 0:8447350292ab 184 wait(0.1);
jjantoine 0:8447350292ab 185 myled = 0;
jjantoine 0:8447350292ab 186 wait(0.1);
jjantoine 0:8447350292ab 187 }
jjantoine 0:8447350292ab 188 }
jjantoine 0:8447350292ab 189
jjantoine 0:8447350292ab 190
jjantoine 0:8447350292ab 191 }
jjantoine 0:8447350292ab 192
jjantoine 0:8447350292ab 193
jjantoine 0:8447350292ab 194 void TGP_START_READ_ACK()
jjantoine 0:8447350292ab 195 {
jjantoine 0:8447350292ab 196 for(i=0; i<4; i++)
jjantoine 0:8447350292ab 197 {
jjantoine 0:8447350292ab 198 pc.printf("%c",packetsize[i]);
jjantoine 0:8447350292ab 199 }
jjantoine 0:8447350292ab 200
jjantoine 0:8447350292ab 201 pc.printf("%c",ENUM_Packet_ID+1);
jjantoine 0:8447350292ab 202
jjantoine 0:8447350292ab 203 for(i=0; i<2; i++)
jjantoine 0:8447350292ab 204 {
jjantoine 0:8447350292ab 205 pc.printf("%c",UINT16_PacketCounter[i]);
jjantoine 0:8447350292ab 206 }
jjantoine 0:8447350292ab 207
jjantoine 0:8447350292ab 208 for(i=0; i<4; i++)
jjantoine 0:8447350292ab 209 {
jjantoine 0:8447350292ab 210 pc.printf("%c",UINT32_Timestamp[i]);
jjantoine 0:8447350292ab 211 }
jjantoine 0:8447350292ab 212
jjantoine 0:8447350292ab 213 for(i=0; i<2; i++)
jjantoine 0:8447350292ab 214 {
jjantoine 0:8447350292ab 215 pc.putc(UINT16_PortNumber[i]);
jjantoine 0:8447350292ab 216 }
jjantoine 0:8447350292ab 217
jjantoine 0:8447350292ab 218 crc_cal();
jjantoine 0:8447350292ab 219
jjantoine 0:8447350292ab 220 for(i=0; i<4; i++)
jjantoine 0:8447350292ab 221 {
jjantoine 0:8447350292ab 222 pc.putc(crcchar[i]);
jjantoine 0:8447350292ab 223 }
jjantoine 0:8447350292ab 224
jjantoine 0:8447350292ab 225 myled = 0;
jjantoine 0:8447350292ab 226 pin = 1;
jjantoine 0:8447350292ab 227 }
jjantoine 0:8447350292ab 228
jjantoine 0:8447350292ab 229 void TGP_STOP_READ_ACK()
jjantoine 0:8447350292ab 230 {
jjantoine 0:8447350292ab 231 for(i=0; i<4; i++)
jjantoine 0:8447350292ab 232 {
jjantoine 0:8447350292ab 233 pc.printf("%c",packetsize[i]);
jjantoine 0:8447350292ab 234 }
jjantoine 0:8447350292ab 235
jjantoine 0:8447350292ab 236 pc.printf("%c",ENUM_Packet_ID+1);
jjantoine 0:8447350292ab 237
jjantoine 0:8447350292ab 238 for(i=0; i<2; i++)
jjantoine 0:8447350292ab 239 {
jjantoine 0:8447350292ab 240 pc.printf("%c",UINT16_PacketCounter[i]);
jjantoine 0:8447350292ab 241 }
jjantoine 0:8447350292ab 242
jjantoine 0:8447350292ab 243 for(i=0; i<4; i++)
jjantoine 0:8447350292ab 244 {
jjantoine 0:8447350292ab 245 pc.printf("%c",UINT32_Timestamp[i]);
jjantoine 0:8447350292ab 246 }
jjantoine 0:8447350292ab 247
jjantoine 0:8447350292ab 248 for(i=0; i<2; i++)
jjantoine 0:8447350292ab 249 {
jjantoine 0:8447350292ab 250 pc.putc(UINT16_PortNumber[i]);
jjantoine 0:8447350292ab 251 }
jjantoine 0:8447350292ab 252
jjantoine 0:8447350292ab 253 crc_cal();
jjantoine 0:8447350292ab 254
jjantoine 0:8447350292ab 255 for(i=0; i<4; i++)
jjantoine 0:8447350292ab 256 {
jjantoine 0:8447350292ab 257 pc.putc(crcchar[i]);
jjantoine 0:8447350292ab 258 }
jjantoine 0:8447350292ab 259
jjantoine 0:8447350292ab 260 myled = 0;
jjantoine 0:8447350292ab 261 pin = 0;
jjantoine 0:8447350292ab 262 }