Ajoute la liaison TMS320 (simulee), l'IHM OLED et la LED de statut
Protocole ASCII type NMEA ($T/$C avec checksum) entre l'ESP32-C3 et le TMS320 (frequence/duty/tensions/courants/temperatures + commandes HT/PWM1/PWM2), avec simulateur local le temps que le firmware TMS320 existe. Driver SSD1322 repointe sur les GPIO du schema, dashboard texte 3 pages tournantes sur l'ecran ER-OLEDM032-1. LED RGB embarquee (GPIO8) clignotante 1 Hz vert 30% comme indicateur de vie. Serveur web laisse en stub (sera branche en STA sur le reseau local une fois l'OLED valide). Ajout de la documentation technique (schema, datasheets, protocole).
This commit is contained in:
@ -0,0 +1,76 @@
|
||||
/***************************************************
|
||||
//Web: http://www.buydisplay.com
|
||||
EastRising Technology Co.,LTD
|
||||
Examples for ER-OLEDM032-1
|
||||
Display is Hardward SPI 4-Wire SPI Interface
|
||||
Tested and worked with:
|
||||
Works with Arduino 2.3.4 IDE
|
||||
NOTE: test OK:ESP32-WROOM-32
|
||||
****************************************************/
|
||||
|
||||
/*
|
||||
Note:The module needs to be jumpered to an SPI interface. R19,R23 Short and R18,R20 Open
|
||||
Unused signal pin Recommended to connect to GND
|
||||
/* == Hardward SPI to ESP32 ==
|
||||
OLED => ESP32
|
||||
*1. GND -> GND
|
||||
*2. VCC -> 3.3-5V
|
||||
*4. SCL -> 18
|
||||
*5. SDI -> 23
|
||||
*7-13 -> GND
|
||||
*14. DC -> 17
|
||||
*15. RES -> 16
|
||||
*16. CS -> 5
|
||||
*/
|
||||
|
||||
|
||||
#include <SPI.h>
|
||||
#include "er_oled.h"
|
||||
|
||||
//uint8_t oled_buf[OLED_Y_MAXPIXEL * OLED_X_MAXPIXEL/2];
|
||||
|
||||
void setup() {
|
||||
Serial.begin(9600);
|
||||
Serial.print("OLED Example\n");
|
||||
|
||||
/* display an image of bitmap matrix */
|
||||
er_oled_begin();
|
||||
|
||||
|
||||
}
|
||||
|
||||
void loop() {
|
||||
er_oled_clear();
|
||||
er_oled_bitmap_gray(PIC1);
|
||||
delay(3000);
|
||||
|
||||
er_oled_clear();
|
||||
er_oled_bitmap_gray(PIC2);
|
||||
delay(3000);
|
||||
|
||||
er_oled_clear();
|
||||
er_oled_bitmap_mono(PIC3);
|
||||
delay(3000);
|
||||
|
||||
er_oled_clear();
|
||||
er_oled_string(0, 0, "********************************",0);
|
||||
er_oled_string(32, 16, "EastRising Technology", 0);
|
||||
er_oled_string(40, 32, "www.buydisplay.com", 1);
|
||||
er_oled_string(0, 48, "********************************",0);
|
||||
uint8_t i;
|
||||
for(i=0;i<=48;i++)
|
||||
{
|
||||
command(0xa1); //start line
|
||||
data(i);
|
||||
delay(100);
|
||||
}
|
||||
for(i=48;i>0;i--)
|
||||
{
|
||||
command(0xa1); //start line
|
||||
data(i);
|
||||
delay(100);
|
||||
}
|
||||
command(0xa1); //start line
|
||||
data(0);
|
||||
}
|
||||
|
||||
187
doc/ER-OLEDM032-1_ESP32_Tutorial/ER-OLEDM032-1/er_oled.cpp
Normal file
187
doc/ER-OLEDM032-1_ESP32_Tutorial/ER-OLEDM032-1/er_oled.cpp
Normal file
@ -0,0 +1,187 @@
|
||||
/***************************************************
|
||||
//Web: http://www.buydisplay.com
|
||||
EastRising Technology Co.,LTD
|
||||
****************************************************/
|
||||
#include <SPI.h>
|
||||
#include "er_oled.h"
|
||||
|
||||
|
||||
void command(uint8_t cmd)
|
||||
{
|
||||
digitalWrite(OLED_DC, LOW);
|
||||
digitalWrite(OLED_CS, LOW);
|
||||
SPI.transfer(cmd);
|
||||
digitalWrite(OLED_CS, HIGH);
|
||||
}
|
||||
|
||||
void data(uint8_t dat)
|
||||
{
|
||||
digitalWrite(OLED_DC, HIGH);
|
||||
digitalWrite(OLED_CS, LOW );
|
||||
SPI.transfer(dat);
|
||||
digitalWrite(OLED_CS, HIGH);
|
||||
}
|
||||
|
||||
|
||||
void er_oled_begin()
|
||||
{
|
||||
pinMode(OLED_RST, OUTPUT);
|
||||
pinMode(OLED_DC, OUTPUT);
|
||||
pinMode(OLED_CS, OUTPUT);
|
||||
SPI.begin();
|
||||
|
||||
SPI.beginTransaction(SPISettings(20000000, MSBFIRST, SPI_MODE0));
|
||||
//SPI.setClockDivider(SPI_CLOCK_DIV2);
|
||||
|
||||
digitalWrite(OLED_CS, LOW);
|
||||
digitalWrite(OLED_RST, HIGH);
|
||||
delay(10);
|
||||
digitalWrite(OLED_RST, LOW);
|
||||
delay(10);
|
||||
digitalWrite(OLED_RST, HIGH);
|
||||
|
||||
|
||||
command(0xFD); /*SET COMMAND LOCK*/
|
||||
data(0x12); /* UNLOCK */
|
||||
command(0xAE); /*DISPLAY OFF*/
|
||||
command(0xB3);/*DISPLAYDIVIDE CLOCKRADIO/OSCILLATAR FREQUANCY*/
|
||||
data(0x91); command(0xCA); /*multiplex ratio*/
|
||||
data(0x3F); /*duty = 1/64*/
|
||||
command(0xA2); /*set offset*/
|
||||
data(0x00);
|
||||
command(0xA1); /*start line*/
|
||||
data(0x00);
|
||||
command(0xA0); /*set remap*/
|
||||
data(0x14);
|
||||
data(0x11);
|
||||
|
||||
command(0xAB); /*funtion selection*/
|
||||
data(0x01); /* selection external vdd */
|
||||
command(0xB4); /* */
|
||||
data(0xA0);
|
||||
data(0xfd);
|
||||
command(0xC1); /*set contrast current */
|
||||
data(0x80);
|
||||
command(0xC7); /*master contrast current control*/
|
||||
data(0x0f);
|
||||
|
||||
command(0xB1); /*SET PHASE LENGTH*/
|
||||
data(0xE2);
|
||||
command(0xD1); /**/
|
||||
data(0x82);
|
||||
data(0x20);
|
||||
command(0xBB); /*SET PRE-CHANGE VOLTAGE*/
|
||||
data(0x1F);
|
||||
command(0xB6); /*SET SECOND PRE-CHARGE PERIOD*/
|
||||
data(0x08);
|
||||
command(0xBE); /* SET VCOMH */
|
||||
data(0x07);
|
||||
command(0xA6); /*normal display*/
|
||||
command(0xAF); /*display ON*/
|
||||
}
|
||||
|
||||
void er_oled_SetWindow(uint8_t Xstart, uint8_t Ystart, uint8_t Xend, uint8_t Yend)
|
||||
{
|
||||
command(0x15);
|
||||
data(Xstart+0x1c);
|
||||
data(Xend+0x1c);
|
||||
command(0x75);
|
||||
data(Ystart);
|
||||
data(Yend);
|
||||
command(0x5c);//write ram command
|
||||
}
|
||||
|
||||
void er_oled_clear()
|
||||
{int i,row;
|
||||
command(0x15);
|
||||
data(0x00); //col start
|
||||
data(0x77); //col end
|
||||
command(0x75);
|
||||
data(0x00); //row start
|
||||
data(0x7f); //row end
|
||||
command(0x5c);
|
||||
for (row = 0; row < 128; row++) {
|
||||
for(i = 0; i< 240; i++ ) {
|
||||
data(0x00);// write data
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void er_oled_char(uint8_t x, uint8_t y, const char *acsii, uint8_t mode)
|
||||
{ uint8_t i,str;uint16_t OffSet;
|
||||
x=x/4;
|
||||
OffSet = (*acsii - 32)*16;
|
||||
er_oled_SetWindow(x, y, x+1, y+15);
|
||||
for (i=0;i<16;i++)
|
||||
{ str =pgm_read_byte(&AsciiLib[OffSet + i]);
|
||||
if(mode) str=~str;
|
||||
Data_processing (str);
|
||||
}
|
||||
}
|
||||
|
||||
void er_oled_string(uint8_t x, uint8_t y, const char *pString, uint8_t Mode)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
if (*pString == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
er_oled_char(x, y, pString,Mode);
|
||||
x += 8;
|
||||
pString += 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Data_processing(uint8_t temp) //turns 1byte B/W data to 4 bye gray data with 8 Pixel
|
||||
{uint8_t temp1,temp2;
|
||||
|
||||
if(temp&0x80)temp1=0xf0;
|
||||
else temp1=0x00;
|
||||
if(temp&0x40)temp2=0x0f;
|
||||
else temp2=0x00;
|
||||
temp1=temp1|temp2;
|
||||
data(temp1); //Pixel1,Pixel2
|
||||
if(temp&0x20)temp1=0xf0;
|
||||
else temp1=0x00;
|
||||
if(temp&0x10)temp2=0x0f;
|
||||
else temp2=0x00;
|
||||
temp1=temp1|temp2;
|
||||
data(temp1); //Pixel3,Pixel4
|
||||
if(temp&0x08)temp1=0xf0;
|
||||
else temp1=0x00;
|
||||
if(temp&0x04)temp2=0x0f;
|
||||
else temp2=0x00;
|
||||
temp1=temp1|temp2;
|
||||
data(temp1); //Pixel5,Pixel6
|
||||
if(temp&0x02)temp1=0xf0;
|
||||
else temp1=0x00;
|
||||
if(temp&0x01)temp2=0x0f;
|
||||
else temp2=0x00;
|
||||
temp1=temp1|temp2;
|
||||
data(temp1); //Pixel7,Pixel8
|
||||
}
|
||||
|
||||
void er_oled_bitmap_mono(const uint8_t * pBuf)
|
||||
{ uint8_t row,col,dat;
|
||||
er_oled_SetWindow(0, 0, 255/4, 63);
|
||||
for (row = 0; row < 64; row++) {
|
||||
for(col = 0;col<256/8; col++ ) {
|
||||
dat=(pgm_read_byte(pBuf));
|
||||
*pBuf++;
|
||||
Data_processing(dat);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void er_oled_bitmap_gray(const uint8_t * pBuf)
|
||||
{ uint8_t row,col;
|
||||
er_oled_SetWindow(0, 0, 255/4, 63);
|
||||
for (row = 0; row < 64; row++) {
|
||||
for(col = 0;col<128; col++ ) {
|
||||
data(pgm_read_byte(pBuf));
|
||||
* pBuf++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1295
doc/ER-OLEDM032-1_ESP32_Tutorial/ER-OLEDM032-1/er_oled.h
Normal file
1295
doc/ER-OLEDM032-1_ESP32_Tutorial/ER-OLEDM032-1/er_oled.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
doc/ER-OLEDM032-1_Series_Datasheet.pdf
Normal file
BIN
doc/ER-OLEDM032-1_Series_Datasheet.pdf
Normal file
Binary file not shown.
BIN
doc/Interfacing_ER-OLEDM032-1_to_Arduino.pdf
Normal file
BIN
doc/Interfacing_ER-OLEDM032-1_to_Arduino.pdf
Normal file
Binary file not shown.
BIN
doc/SSD1322.pdf
Normal file
BIN
doc/SSD1322.pdf
Normal file
Binary file not shown.
10
doc/parametre-liaisonUART-TMS320-ESP32.txt
Normal file
10
doc/parametre-liaisonUART-TMS320-ESP32.txt
Normal file
@ -0,0 +1,10 @@
|
||||
Paramètre TMS320:
|
||||
Fréquence, Duty cycle (a convertir en %) etage 1 etage 2
|
||||
A partir de lectures ADC:
|
||||
Tension entrée, courant d'entrée
|
||||
Tension etage 1, courant shunt mosfet 1, température (NTC) etage1, tension étage 2, courant shunt mosfet 2, température etage2.
|
||||
Courant sortie.
|
||||
|
||||
Commande: activer/desactiver. sortie HT
|
||||
activer désactiver PWM1
|
||||
activer/desactiver PWM2.
|
||||
BIN
doc/schema-esp32.png
Normal file
BIN
doc/schema-esp32.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
Reference in New Issue
Block a user