Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "SakuraIO.h" 00003 00004 Serial pc(USBTX, USBRX); 00005 DigitalOut myled(LED1); 00006 00007 #if defined(TARGET_NUCLEO_F042K6) || defined(TARGET_NUCLEO_F303K8) 00008 // Nucleo-32 series 00009 SPI spi(A6, A5, A4); // mosi, miso, sclk 00010 DigitalOut cs(A3); 00011 I2C i2c(D4, D5); // sda, scl 00012 #elif defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_L476RG) 00013 // Nucleo-64 series 00014 SPI spi(D11, D12, D13); // mosi, miso, sclk 00015 DigitalOut cs(D10); 00016 I2C i2c(D14, D15); // sda, scl 00017 #else 00018 // LPC1768 or others. 00019 SPI spi(p5, p6, p7); // mosi, miso, sclk 00020 DigitalOut cs(p8); 00021 I2C i2c(p9, p10); // sda, scl 00022 #endif 00023 00024 int main() 00025 { 00026 //SakuraIO_SPI sakuraio( spi, cs ); 00027 SakuraIO_I2C sakuraio(i2c); 00028 00029 00030 pc.printf("Waiting to come online"); 00031 for(;;) { 00032 if( (sakuraio.getConnectionStatus() & 0x80) == 0x80 ) break; 00033 pc.printf("."); 00034 wait_ms(1000); 00035 } 00036 pc.printf("\r\n"); 00037 00038 uint8_t counter = 0; 00039 00040 while(1) { 00041 pc.printf("\r\n%02x\r\n", counter); 00042 00043 uint8_t request[33] = {}; 00044 uint8_t response[33] = {}; 00045 00046 // Echoback 00047 request[0] = counter; 00048 sakuraio.echoback(1, request, response); 00049 pc.printf("%02x\r\n", request[0]); 00050 pc.printf(" -> "); 00051 pc.printf("%02x\r\n", response[0]); 00052 00053 // Unixtime 00054 uint32_t unixtime = (uint32_t)(sakuraio.getUnixtime()/1000UL); 00055 pc.printf("Unixtime "); 00056 pc.printf("%d\r\n", unixtime); 00057 00058 // ADC 00059 uint16_t adc; 00060 adc = sakuraio.getADC(0); 00061 pc.printf("ADC0 "); 00062 pc.printf("%d\r\n", adc); 00063 adc = sakuraio.getADC(1); 00064 pc.printf("ADC1 "); 00065 pc.printf("%d\r\n", adc); 00066 00067 // ProductID 00068 uint16_t pid = sakuraio.getProductID(); 00069 pc.printf("PID "); 00070 pc.printf("%d\r\n", pid); 00071 00072 // UniqueID 00073 sakuraio.getUniqueID((char *)response); 00074 pc.printf("UID "); 00075 pc.printf("%s\r\n", response); 00076 00077 // Version 00078 sakuraio.getFirmwareVersion((char *)response); 00079 pc.printf("Ver "); 00080 pc.printf("%s\r\n", response); 00081 00082 // Connection Status 00083 uint8_t connectionStatus = sakuraio.getConnectionStatus(); 00084 pc.printf("Status "); 00085 pc.printf("%02x\r\n", connectionStatus); 00086 00087 //getSignalQuality 00088 uint8_t signalQuality = sakuraio.getSignalQuality(); 00089 pc.printf("Quality "); 00090 pc.printf("%d\r\n", signalQuality); 00091 00092 00093 // Tx Queue 00094 uint8_t ret; 00095 ret = sakuraio.enqueueTx((uint8_t)0, (int32_t)counter); 00096 pc.printf("Enqueue "); 00097 pc.printf("%d\r\n", ret); 00098 00099 uint8_t avail; 00100 uint8_t queued; 00101 sakuraio.getTxQueueLength(&avail, &queued); 00102 pc.printf("Tx Available="); 00103 pc.printf("%d",avail); 00104 pc.printf(" Queued="); 00105 pc.printf("%d\r\n", queued); 00106 00107 if(queued >= 30) { 00108 ret = sakuraio.clearTx(); 00109 pc.printf("Clear "); 00110 pc.printf("%02x\r\n" ,ret); 00111 } else if(queued >= 5) { 00112 ret = sakuraio.send(); 00113 pc.printf("Send "); 00114 pc.printf("%02x\r\n", ret); 00115 } 00116 00117 // Rx Queue 00118 sakuraio.getRxQueueLength(&avail, &queued); 00119 pc.printf("Rx Available="); 00120 pc.printf("%d", avail); 00121 pc.printf(" Queued="); 00122 pc.printf("%d\r\n", queued); 00123 00124 for(uint8_t i=0; i<queued; i++) { 00125 uint8_t channel; 00126 uint8_t type; 00127 uint8_t values[8]; 00128 int64_t offset; 00129 ret = sakuraio.dequeueRx(&channel, &type, values, &offset); 00130 pc.printf("Dequeue "); 00131 pc.printf("%02x", ret); 00132 if(ret == 0x01) { 00133 pc.printf(" ch="); 00134 pc.printf("%d", channel); 00135 pc.printf(" type="); 00136 pc.printf("%c", type); 00137 pc.printf(" values=["); 00138 for(uint8_t b=0; b<7; b++) { 00139 pc.printf("%02x ", values[b]); 00140 } 00141 pc.printf("%02x", values[7]); 00142 pc.printf("] offset="); 00143 pc.printf("%d\r\n", (int32_t)offset); 00144 } else { 00145 pc.printf(" ERROR\r\n"); 00146 } 00147 } 00148 00149 wait_ms(1000); 00150 } 00151 00152 }
Generated on Wed Jul 13 2022 03:14:03 by
1.7.2
SCM-LTE-Beta
SCM-LTE-01