MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.22k stars 19.22k forks source link

[BUG] STM32F103RET6 and I2C2 #25185

Closed ASTuser1 closed 1 year ago

ASTuser1 commented 1 year ago

Bug Description

Since i´m unable to register on reprap.org, i unfortunaly have to write down here my issue. On my Creality- CR-100 (not 10) i was trying to run an 16*2 HD44780, attached to an PCF8574 I/O-Extender, on I2C2 (PB10/11) of an original STM32F103RET6 by #define LCM1602 in configuration.h, but with no luck -there is no activity on PB10/11 on my logic analyzer. I2C1 cannot be used, its Pins are connected by default to the stepper drivers (PB8 to X-Axis DIR, PB9 to Y-Axis-STEP).

I use Marlin 2.1.2, VSCode & PlatformIO (both installed around one week ago), Marlin Autobuild, Board Creality_V422, Pins stm32F1/Pins_Creality_V422.h (adjusted to my board), Build for Environment STM32F103RE_creality (512k)

I was also trying to make adjustments in peripheralPins.c of Generic_F103Rx (edit 01/05/23: and Marlin_F103Rx), Section I2C, leaving only PinMap_I2C_SDA attached to PB11 and PinMap_I2C_SCL to PB10.

Originally it says there (sorry, my mistake, at first i had posted a modified Version of mine) :

`

ifdef HAL_I2C_MODULE_ENABLED

WEAK const PinMap PinMap_I2C_SDA[] = { {PB_7, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, {PB_9, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)},

if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)

{PB_11, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)},

endif

{NC, NP, 0} };

endif

ifdef HAL_I2C_MODULE_ENABLED

WEAK const PinMap PinMap_I2C_SCL[] = { {PB_6, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)}, {PB_8, I2C1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_I2C1_ENABLE)},

if defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG)

{PB_10, I2C2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, AFIO_NONE)},

endif

{NC, NP, 0} };

endif

`

What i also miss is a "AFIO_I2C2_ENABLE" or something in that direction.

BTW: In MarlinF103Rx\variant.h , Line 93, PB11 is assigned to LED-Builtin by default. `

ifndef LED_BUILTIN

define LED_BUILTIN PB11

endif

`

HAL-I2C-Module seems to be enabled, because if i write some pointless stuff inside #ifdef HAL_I2C_MODULE_ENABLED as shown above, compiling will stop.

Definitions in configuration.h /configuration_adv are as follows:

define DISPLAY_CHARSET_HD44780 JAPANESE

define LCD_INFO_SCREEN_STYLE 0

define SLIM_LCD_MENUS

define LCM1602 (or LCD_SAINSMART_I2C_1602, seems to be the same)

From factory this Board had an small 0,96-OLED Display with an SSD1306-Controller attached to I2C2 and was already running Marlin, but i have no clue which version. Defining U8GLIB_SSD1306 instead of LCM1602 in order to get at least the original Dispaly working doesn´t work either, no I2C-Activity.

Creality hasn´t / won´t give out the Sources (we know they actually have to; the Fimware Creator is called "BiSun"); i only have the already compiled original .bin-File available.

The Board is a very stripped down Version and "somehow" related to the Creality V422-Board, uses 4*A4988 Steppers, has the usual connectors, provides a CH340 für USB Communiction/Programming, has a SD Slot, but is missing components and connectors for a headbed, Fan-PWM-Control, has no external I2C-EEPROM and uses a different Pin for the Nozzle-Thermistor. It also uses PB14/13/12 for three control buttons and no rotary encoder.

IdK if this is a Bug or simply lack of my knowledge. I´m an long term Assembly-programmer (from 8 Bit up to Cortex), not a C++-Programmer, but i cannot debug the ELF-Debug-File down to the problem, since i don´t have a Hardware debugger for STM32 (i have only a simple CortexM3-Debugger in Software) and the output is too entangled for tracing.

BTW: Compiling with Serial Port set on 115200 doesn´t let me connect to the board, 250KBaud just works fine.

Best regards & thank you!

Bug Timeline

No response

Expected behavior

Having output on Display

Actual behavior

nothing

Steps to Reproduce

No response

Version of Marlin Firmware

2.1.2

Printer model

Creality CR-100

Electronics

Stock

Add-ons

No response

Bed Leveling

None

Your Slicer

None

Host Software

None

Don't forget to include

Additional information & file uploads

Marlin.zip

ASTuser1 commented 1 year ago

BTW: #define U8GLIB_SSD1306

results in: "Marlin\src\inc\Warnings.cpp:67:4: warning: #warning "Your Configuration provides no method to acquire user feedback!" [-Wcpp]"

Where idK if this caused by a missing input definition - Rotary encoder or in my case, simple buttons, which are not defined yet, because idk where to look at - or a hint that output cannot be shown to a display, Could be issued by both, as i read somewhere else.

define SAV_3DGLCD

results in no connection to the board via Serial (i suppose it hangs).

ASTuser1 commented 1 year ago

Just curious - i´ve redefinded u8glib_SSD1306 in configuration.h - according to STM32CubeIDE, loaded firmware-ELF - in this dropdown list (sorry for the quality) i cannot see any file that is called "u8glib" or "wire" - does that automatically mean that these librarys are not included at all at buildtime? If so, what could be the cause?

ques

github-actions[bot] commented 1 year ago

This issue has had no activity in the last 60 days. Please add a reply if you want to keep this issue active, otherwise it will be automatically closed within 10 days.

github-actions[bot] commented 1 year ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.