. , , , . . .
, . AD98xx, Si5xxx, DS18, 1637, MAX7219 ..., () . . , ( (I2C, SPI, UART/USART ).
---
U-Blox GPS UBX-G6010 ( RS-41) + STM32F100C8T6:
"" (. $GPGGA vs $GPRMC), fix/ (, , )?
$GPGGA . $GPRMC . $GPRMC , "" status- , "" ( ).
. , , , . . .
, . AD98xx, Si5xxx, DS18, 1637, MAX7219 ..., () . . , ( (I2C, SPI, UART/USART ).
---
U-Blox GPS UBX-G6010 ( RS-41) + STM32F100C8T6:
"" (. $GPGGA vs $GPRMC), fix/ (, , )?
$GPGGA . $GPRMC . $GPRMC , "" status- , "" ( ).
OLED :
0.91" OLED:
0.96" OLED::#define OLED_ADDR 0x3C #define OLED_CMD_MODE 0x00 #define OLED_DAT_MODE 0x40 #define OLED_INIT_LEN 12 // 12: no screen flip, 14: screen flip ... uint8_t OLED_INIT_CMD[] = { // SSD1306 128x32 0xA8, 0x1F, // set multiplex (HEIGHT-1): 0x1F for 128x32, 0x3F for 128x64 0x22, 0x00, 0x03, // set min and max page 0x20, 0x01, // set vertical addressing mode 0xDA, 0x02, // set COM pins hardware configuration to sequential 0x8D, 0x14, // enable charge pump 0xAF, // switch on OLED 0xA1, 0xC8 // flip the screen }; ... I2C2_write_regs(OLED_ADDR, OLED_CMD_MODE, OLED_INIT_CMD, OLED_INIT_LEN);
:#define OLED_ADDR 0x3C #define OLED_CMD_MODE 0x00 #define OLED_DAT_MODE 0x40 ... uint8_t OLED_INIT_CMD[] = { // SSD1306 128x64 0xAE, // display OFF 0xD5, 0x80, // clock divide 0xA8, 0x3F, // multiplex = 63 (64 rows) 0xD3, 0x00, // display offset = 0 0x40, // start line = 0 0x8D, 0x14, // charge pump ON 0xA1, // segment remap 0xC8, // COM scan direction 0xDA, 0x12, // COM pins for 128x64 0x81, 0x7F, // contrast -> normal 0x7F, max 0xFF 0xD9, 0xF1, // precharge 0xDB, 0x40, // VCOM level 0xA4, // display follows RAM 0xA6, // normal display 0x20, 0x00, // PAGE addressing mode (!) 0xAF // display ON }; ... I2C2_write_regs(OLED_ADDR, OLED_CMD_MODE, OLED_INIT_CMD, sizeof(OLED_INIT_CMD));
: 1 (: 0 , : 1)