Next step in porting: DISC0-STM32F746

It seems that the problem is in my managed code. I didn’t understand the DataWriter.Store() call.
How to use it ? Calling it after flush it sends finally out the data.
It happens becouse the native STM32F7_Uart_Write() function is called ONLY when a managed Datawriter.Store() is called.

EDIT: Ahaha ok, too late and eyes goes screwed up… I see that tutorial has a Store() call example! :cold_sweat:

@Dat_Tran: I’m porting f7 to 0.10.0 and I found some issues.
Take a look at Cortex-m7 startup code (STM32F7_Startup.cpp file):

if ((DBGMCU->IDCODE & 0xFF) != 0x11) {
    FLASH->ACR |= FLASH_ACR_PRFTEN;
}

This code is not enough to startup internal rom and mcu lockup due to invalid wait state. You need more bits set:

if ((DBGMCU->IDCODE & 0xFF) != 0x11) {
	FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_BITS | FLASH_ACR_ARTEN;
}

One more suggestion: you don’t wait the AHB, APB1&2 clock settle on this line:

RCC->CFGR = RCC_CFGR_SW_PLL          // sysclk = pll out (STM32F7_SYSTEM_CLOCK_HZ)
    | RCC_CFGR_HPRE_DIV_BITS   // AHB clock
    | RCC_CFGR_PPRE1_DIV_BITS  // APB1 clock
    | RCC_CFGR_PPRE2_DIV_BITS; // APB2 clock

I would change in:

RCC->CFGR = RCC_CFGR_SW_PLL          // sysclk = pll out (STM32F7_SYSTEM_CLOCK_HZ)
    | RCC_CFGR_HPRE_DIV_BITS   // AHB clock
    | RCC_CFGR_PPRE1_DIV_BITS  // APB1 clock
    | RCC_CFGR_PPRE2_DIV_BITS; // APB2 clock;
// wait for PLL ready 
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL);

This is not critical for F746, but on the very fast F769 chip it creates me a problem on USB HS port.

Last suggestion: enable DTCM 64kbytes ram clock for the F7 mcu (mapped at 0x20000000).

RCC->AHB1ENR |= RCC_AHB1ENR_DTCMRAMEN;

@dobova

What do you do for a profession? I wish I could get this skilled with native coding >_<

2 Likes

@zeroaviation, I love bare metal programming… since the 6502, Z80 and beyond era. This is my job also today.

Anyway stm32f7 is now running 0.10.0. But I’m far from an expert of cortex-m7 and stm32f7 chips.
I found in my old gadgeteer drawer an interesting HubAP5 and an io60p16. This are i2c board io expansion with pwm capability. I’m using for many tests

1 Like

Pushed on Github rel 0.10.0 working for STM32F7. It’s mostly based on the GHI code now, with very few changes for STM32F7. It includes code for SDRAM, DSI display, LDTC display, USB HS and USB HS ULPI

4 Likes

Thank you @dobova! Can’t wait ot test :slight_smile:

1 Like

Thanks for the great work! I built the Disovery429I and is working great.

1 Like

Ok, now I need a better order on the desk…

5 Likes

My, that looks so less cluttered than mine. :slight_smile:

7 Likes

Dave, definitely you are the winner !! :scream:

now I understand why You have problem with …

LOL

Holly crap. My anxiety would be through the roof.

Where is my SMT resistor ??? :stuck_out_tongue_winking_eye:

Meanwhile, I found an other STM32F7 board in the magic box, that I missed few month ago in the garage. Now pushed on Github a Multimedia Plus for STM32F746 device definition with working display (not yet with GHI Graphic lib).
Quite expansive like the one for STM32F4, but lot of peripherals attached.

https://www.mikroe.com/mikromedia-4-stm32f7

+1 for 3d Mouse! But seriously, that desk is a fire hazard.

@Dave_McLaughlin @dobova

meh…your addictions are not complete…i can still see desk surfaces :yum:

2 Likes

@Dave_McLaughlin @dobova
“If a cluttered desk is a sign of a cluttered mind, of what, then, is an empty desk a sign?”
Albert Einstein

3 Likes

Justin, I can’t imagine your desk at all…not for humans.

1 Like

My office area was so bad the wife rented a cabin and kicked me out of the house :joy:

3 Likes

3 Likes