A demo application that receive and print tempreture and humidity from STM431J by USB400J that pluged-in to mbed application board.

Dependencies:   C12832 USB400Serial USBHost mbed

Files at this revision

API Documentation at this revision

Comitter:
ytsuboi
Date:
Thu May 25 12:19:17 2017 +0000
Commit message:
first commit

Changed in this revision

C12832.lib Show annotated file Show diff for this revision Revisions of this file
USB400Serial.lib Show annotated file Show diff for this revision Revisions of this file
USBHost.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832.lib	Thu May 25 12:19:17 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/chris/code/C12832/#7de323fa46fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USB400Serial.lib	Thu May 25 12:19:17 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/nanashino/code/USB400Serial/#0dd5d1e4cf71
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/USBHost.lib	Thu May 25 12:19:17 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/USBHost/#655a8c5fa238
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu May 25 12:19:17 2017 +0000
@@ -0,0 +1,154 @@
+#include "mbed.h"
+#include "C12832.h"
+#include "USB400Serial.h"
+
+C12832 lcd(p5, p7, p6, p8, p11);
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+Serial pc(USBTX, USBRX);
+
+uint8_t u8CRC8Table[256] = {
+    0x00, 0x07, 0x0e, 0x09, 0x1c, 0x1b, 0x12, 0x15,
+    0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d,
+    0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65,
+    0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d,
+    0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5,
+    0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd,
+    0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85,
+    0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd,
+    0xc7, 0xc0, 0xc9, 0xce, 0xdb, 0xdc, 0xd5, 0xd2,
+    0xff, 0xf8, 0xf1, 0xf6, 0xe3, 0xe4, 0xed, 0xea,
+    0xb7, 0xb0, 0xb9, 0xbe, 0xab, 0xac, 0xa5, 0xa2,
+    0x8f, 0x88, 0x81, 0x86, 0x93, 0x94, 0x9d, 0x9a,
+    0x27, 0x20, 0x29, 0x2e, 0x3b, 0x3c, 0x35, 0x32,
+    0x1f, 0x18, 0x11, 0x16, 0x03, 0x04, 0x0d, 0x0a,
+    0x57, 0x50, 0x59, 0x5e, 0x4b, 0x4c, 0x45, 0x42,
+    0x6f, 0x68, 0x61, 0x66, 0x73, 0x74, 0x7d, 0x7a,
+    0x89, 0x8e, 0x87, 0x80, 0x95, 0x92, 0x9b, 0x9c,
+    0xb1, 0xb6, 0xbf, 0xb8, 0xad, 0xaa, 0xa3, 0xa4,
+    0xf9, 0xfe, 0xf7, 0xf0, 0xe5, 0xe2, 0xeb, 0xec,
+    0xc1, 0xc6, 0xcf, 0xc8, 0xdd, 0xda, 0xd3, 0xd4,
+    0x69, 0x6e, 0x67, 0x60, 0x75, 0x72, 0x7b, 0x7c,
+    0x51, 0x56, 0x5f, 0x58, 0x4d, 0x4a, 0x43, 0x44,
+    0x19, 0x1e, 0x17, 0x10, 0x05, 0x02, 0x0b, 0x0c,
+    0x21, 0x26, 0x2f, 0x28, 0x3d, 0x3a, 0x33, 0x34,
+    0x4e, 0x49, 0x40, 0x47, 0x52, 0x55, 0x5c, 0x5b,
+    0x76, 0x71, 0x78, 0x7f, 0x6A, 0x6d, 0x64, 0x63,
+    0x3e, 0x39, 0x30, 0x37, 0x22, 0x25, 0x2c, 0x2b,
+    0x06, 0x01, 0x08, 0x0f, 0x1a, 0x1d, 0x14, 0x13,
+    0xae, 0xa9, 0xa0, 0xa7, 0xb2, 0xb5, 0xbc, 0xbb,
+    0x96, 0x91, 0x98, 0x9f, 0x8a, 0x8D, 0x84, 0x83,
+    0xde, 0xd9, 0xd0, 0xd7, 0xc2, 0xc5, 0xcc, 0xcb,
+    0xe6, 0xe1, 0xe8, 0xef, 0xfa, 0xfd, 0xf4, 0xf3
+};
+
+#define proccrc8(u8CRC, u8Data) (u8CRC8Table[u8CRC ^ u8Data])
+
+void serial_task(void const*)
+{
+    USB400Serial serial;
+    int i;
+    int dataLength;
+    int optionalLength;
+    uint8_t c;
+    uint8_t crc;
+    int sensor = 0;
+    int humidity = 0;
+    int temperature = 0;
+
+    while(1) {
+
+        while(!serial.connect())
+            Thread::wait(500);
+
+        while (1) {
+
+            if (!serial.connected())
+                break;
+
+            if (serial.available()) {
+                c = serial.getc();
+
+                if (c == 0x55) {
+                    crc = 0;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+                    dataLength = c;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+                    dataLength = (dataLength << 8) | c;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c);
+                    optionalLength = c;
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c); // packet type
+
+                    c = serial.getc();
+                    crc = proccrc8(crc, c); // CRC
+
+                    if (crc == 0) {
+                        crc = 0;
+
+                        for (i = 0; i < dataLength; i++) {
+                            c = serial.getc();
+                            crc = proccrc8(crc, c);
+
+                            if (i == 4) {                           
+                                // printf("Sensor: %02X ", c);
+                                sensor = c;
+                            }
+                            //A5-04-01
+                            if (i == 6) {
+                                humidity = c;
+                            }
+                            if (i == 7) {
+                                temperature = c;
+                            }
+                        }
+
+                        // printf("hum:%3.1f%% temp:%2.2fC\r\n", humidity*0.4, temperature*0.16);
+
+                        if (sensor == 0x34) {
+                            lcd.locate(0,12);
+                            lcd.printf("%02X Temp:%2.2f C Hum:%3.1f %%\r\n", sensor, temperature*0.16, humidity*0.4);
+                        }
+
+                        if (sensor == 0x52) {
+                            lcd.locate(0,21);
+                            lcd.printf("%02X Temp:%2.2f C Hum:%3.1f %%\r\n", sensor, temperature*0.16, humidity*0.4);
+                        }
+
+                        for (i = 0; i < optionalLength; i++) {
+                            c = serial.getc();
+                            crc = proccrc8(crc, c);
+                        }
+
+                        c = serial.getc();
+                        crc = proccrc8(crc, c);
+
+                    }
+                }
+            }
+        }
+    }
+}
+
+int main()
+{
+    lcd.cls();
+    lcd.locate(0,3);
+    lcd.printf("mbed application board!");
+    
+    Thread serialTask(serial_task, NULL, osPriorityNormal, 256 * 4);
+    while(1) {
+        led1 = !led1;
+        Thread::wait(500);
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu May 25 12:19:17 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5
\ No newline at end of file