STM32F103C8T6 I2C
9 berichten
• Pagina 1 van 1
STM32F103C8T6 I2C
Hallo allemaal.
Ik heb een vraag over een STM32F103 waarbij ik een I2C display op de I2C poort aansluit Het gebruikte display is toevallig een LCD 2004. Dat is een 5V display.
Wanneer ik deze als volgt aansluit:
SCL = PB6
SCA = PB7
dan werkt het display prima.
Echter waneer ik deze aansluit op (PB8 en PB9) OF (PB10 en PB11) dan werkt het niet. Het heeft me wat hoofdbrekens gekost om hier achter te komen!
De vraag is Waarom werken de ander poorten niet?
Zou ik op de een of andere manier een van de I2C poorten kunnen selecteren? Want het komt me nogal vreemd over dat er 3 I2C poorten zijn. Aan een I2C bus hangt immer alles parallel.
Ik heb een vraag over een STM32F103 waarbij ik een I2C display op de I2C poort aansluit Het gebruikte display is toevallig een LCD 2004. Dat is een 5V display.
Wanneer ik deze als volgt aansluit:
SCL = PB6
SCA = PB7
dan werkt het display prima.
Echter waneer ik deze aansluit op (PB8 en PB9) OF (PB10 en PB11) dan werkt het niet. Het heeft me wat hoofdbrekens gekost om hier achter te komen!
De vraag is Waarom werken de ander poorten niet?
Zou ik op de een of andere manier een van de I2C poorten kunnen selecteren? Want het komt me nogal vreemd over dat er 3 I2C poorten zijn. Aan een I2C bus hangt immer alles parallel.
We leven in het midden van de ruimte, maar aan de rand van de tijd.
Advertisement
Re: STM32F103C8T6 I2C
zijn de genoemde pinnen wel een uart?
Ik ken dit type board niet maar kan me niet voorstellen dat er oneindig veel hardware uart poorten zijn.
Een arduino Mega heeft bijvoorbeeld maar 4 van deze poorten
Ik ken dit type board niet maar kan me niet voorstellen dat er oneindig veel hardware uart poorten zijn.
Een arduino Mega heeft bijvoorbeeld maar 4 van deze poorten
Re: STM32F103C8T6 I2C
![Afbeelding](https://i.postimg.cc/y8Jb9Lc6/9-STM32-pinout-diagram.jpg)
Dit is de PinOut van de STM32. Ik zie 3 stuks I2C poort, maar ook 3 stuks SPI poort.
We leven in het midden van de ruimte, maar aan de rand van de tijd.
Re: STM32F103C8T6 I2C
Het ligt vooral aan welke library gebruikt wordt want je kunt niet zomaar poorten toewijzen, dat heeft te maken met welke timers bijv gebruikt worden.
paul deelen
shooter@home.nl
shooter@home.nl
Re: STM32F103C8T6 I2C
Dit is de code die ik gebruik. I2C gebruikt dan PA7 en PA6. En dat werkt.
Wire.h moet ik wel gebruiken om I2C aan te sturen. Wat mij wel opvalt aan de PinOut is dat er maar 2 I2C poorten zijn, en geen 3. Poort 1 is dan wel weer dubbel uitgevoerd, waarvan PB8 en PB9 niet werken. Ik zie dat overal. Ook lees ik dat PB7 en PB6 de standaard poort is.
Verder wordt er naar dit document verwezen: https://github.com/stm32duino/Arduino_C ... 2/wiki/API
Als ik vervolgens dit probeer:
Dan doet het display nog steeds niets. (De code voor het aansturen van het display is niet veranderd)
- Code: Alles selecteren
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//LiquidCrystal_I2C lcd(0x38, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
//Setup 20 x 4 Serial LCD connections (Standaard SDA en SCL worden gebruikt)
LiquidCrystal_I2C lcd(0x27, 20, 4); // Set the LCD address to 0x27 for a 20 chars and 4 line display
//#define LED_BUILTIN
void setup() {
lcd.init();
lcd.begin(20,4);
pinMode(LED_BUILTIN, OUTPUT);
}
// https://www.stm32duino.com/viewtopic.php?t=1705
void loop() {
int DelayTime = 500;
digitalWrite(LED_BUILTIN, HIGH);
lcd.backlight();
delay(DelayTime);
lcd.setCursor(3,0);
lcd.print("Hello YouTube!");
lcd.setCursor(8,1);
lcd.print("****");
lcd.setCursor(0,2);
lcd.print("This is a demo text");
lcd.setCursor(8,3);
lcd.print("****");
digitalWrite(LED_BUILTIN, LOW);
lcd.noBacklight();
delay(DelayTime);
}
Wire.h moet ik wel gebruiken om I2C aan te sturen. Wat mij wel opvalt aan de PinOut is dat er maar 2 I2C poorten zijn, en geen 3. Poort 1 is dan wel weer dubbel uitgevoerd, waarvan PB8 en PB9 niet werken. Ik zie dat overal. Ook lees ik dat PB7 en PB6 de standaard poort is.
Verder wordt er naar dit document verwezen: https://github.com/stm32duino/Arduino_C ... 2/wiki/API
Als ik vervolgens dit probeer:
- Code: Alles selecteren
#include <Wire.h>
// SDA SCL
TwoWire Wire2(PB9, PB8);
void setup() {
Wire2.begin();
}
Dan doet het display nog steeds niets. (De code voor het aansturen van het display is niet veranderd)
We leven in het midden van de ruimte, maar aan de rand van de tijd.
Re: STM32F103C8T6 I2C
je gebruikt dan een andere lib namelijk two wire en je display staat op wire en niet wire2 dus dat moet je verzetten in de library, of opgeven in de aanroep van wire2
paul deelen
shooter@home.nl
shooter@home.nl
Re: STM32F103C8T6 I2C
Enne hoe doe ik dat?
We leven in het midden van de ruimte, maar aan de rand van de tijd.
Re: STM32F103C8T6 I2C
in wire staan de initialities van de poorten en doe moet je dus veranderen in wire
paul deelen
shooter@home.nl
shooter@home.nl
Re: STM32F103C8T6 I2C
@shooter, daar ga ik naar kijken. Overigens ben ik wel iets verder gekomen. Ik zag deze site: https://wiki.st.com/stm32mcu/wiki/Getti ... _functions Daar doet men dat op een iets andere manier. Eigenlijk is I2c niet eens het probleem, Maar SPI. Eigenlijk is SPI ook niet eens het probleem, maar het aansturen van een 320x240 display. Dat werkt nog steeds niet, en daar is het allemaal mee begonnen. Ik wilde de SPI pinnen veranderen, om dat beter oonder controle te krijgen. Dat lukte niet, daarom maar eens I2C geprobeerd. Dat lukte ook niet. En zodoende kwam ik met deze vraag. Nou ja, het houd me in ieder geval van de straat.
We leven in het midden van de ruimte, maar aan de rand van de tijd.
9 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: ibaklep en 8 gasten