From b0c18a617869b07e89338b6309f333af0cf15ba7 Mon Sep 17 00:00:00 2001 From: dwf1m12 <d.w.flynn@soton.ac.uk> Date: Tue, 8 Apr 2025 19:33:10 +0100 Subject: [PATCH] add programmable prescalar to FT1248 interface and boot/stdout init code for div 16 (resets to div 256) --- .../nanosoc_system/verilog/nanosoc_system.v | 4 +-- nanosoc/socdebug_tech | 2 +- software/common/bootloader/bootloader.c | 26 ++----------------- software/common/retarget/uart_stdout.c | 4 +-- 4 files changed, 7 insertions(+), 29 deletions(-) diff --git a/nanosoc/nanosoc_system/verilog/nanosoc_system.v b/nanosoc/nanosoc_system/verilog/nanosoc_system.v index 4e4b3c1..53b8a66 100644 --- a/nanosoc/nanosoc_system/verilog/nanosoc_system.v +++ b/nanosoc/nanosoc_system/verilog/nanosoc_system.v @@ -696,7 +696,7 @@ module nanosoc_system #( //-------------------------- wire [7:0] FT_CLKDIV; - assign FT_CLKDIV = FT1248_CLKDIV; + // assign FT_CLKDIV = FT1248_CLKDIV; // now from socdebug_usrt_control assign CPU_0_RXEV = DMAC_ANY_DONE; @@ -776,7 +776,7 @@ module nanosoc_system #( .RX_VALID_i (STD_RXD_TVALID), .RX_DATA8_i (STD_RXD_TDATA ), .RX_READY_o (STD_RXD_TREADY), - + .INVBAUDDIV8_o (FT_CLKDIV), // Interrupt Interfaces .TXINT ( ), // Transmit Interrupt .RXINT ( ), // Receive Interrupt diff --git a/nanosoc/socdebug_tech b/nanosoc/socdebug_tech index 9ef8d84..247a0af 160000 --- a/nanosoc/socdebug_tech +++ b/nanosoc/socdebug_tech @@ -1 +1 @@ -Subproject commit 9ef8d848da72e57f806b24eed5c2f6bbdce66668 +Subproject commit 247a0afe2a4317369af893a5b5454487c20ab90e diff --git a/software/common/bootloader/bootloader.c b/software/common/bootloader/bootloader.c index 9a9996a..2f7f9b5 100644 --- a/software/common/bootloader/bootloader.c +++ b/software/common/bootloader/bootloader.c @@ -76,6 +76,7 @@ void UartStdOutInit(void) } CMSDK_USRT2->CTRL = 0x00; //re-init CMSDK_USRT2->CTRL = UART_CTRL_TXRXEN; //RX+TX, FT1248/EXTIO USRT + CMSDK_USRT2->BAUDDIV = 0xf0; // inv(15) mod 256 if ((CMSDK_USRT2->STATE & 1)==0) CMSDK_USRT2->DATA = 0x23; // write 8'b01000011 / "#" return; } @@ -151,35 +152,12 @@ int main (void) { // STDOUT init UartStdOutInit(); - UartPuts("\nSoCLabs NanoSoC'24 ARM-CM0+ADP+"); + UartPuts("\nSoCLabs NanoSoC'25 ARM-CM0+ADP+"); if (CMSDK_GPIO1->DATA & 0x80) // high if FT1248, low if EXTIO UartPuts("FT1+U38400"); else UartPuts("EXTIO8x4CD"); UartPuts(" 20241212\n"); -/* - NVIC_EnableIRQ(UARTRX1_IRQn); - NVIC_EnableIRQ(UARTTX1_IRQn); - CMSDK_UART1->CTRL = UART_CTRL_RXIRQEN; // Enable RX interrupt -*/ FlashLoader(); return 0; } - -/* -void UARTRX1_Handler(void) -{ - uart1_char = CMSDK_UART1->DATA; // read and store the byte received - CMSDK_UART1->INTCLEAR = CMSDK_UART_CTRL_RXIRQ_Msk; // Clear RX interrupt req - CMSDK_UART1->CTRL = UART_CTRL_TXIRQEN; // Enable TX interrupt - return; -} - -void UARTTX1_Handler(void) -{ - CMSDK_UART1->DATA = uart1_char; // write the byte to transmit - CMSDK_UART1->INTCLEAR = CMSDK_UART_CTRL_TXIRQ_Msk; // Clear TX interrupt req - CMSDK_UART1->CTRL = UART_CTRL_RXIRQEN; // Re-Enable RX interrupt - return; -} -*/ diff --git a/software/common/retarget/uart_stdout.c b/software/common/retarget/uart_stdout.c index c7145f8..bc038f3 100644 --- a/software/common/retarget/uart_stdout.c +++ b/software/common/retarget/uart_stdout.c @@ -53,7 +53,7 @@ void UartStdOutInit(void) CMSDK_UART2->CTRL = 0x00; // disable whie reprogramming CMSDK_UART2->BAUDDIV = BAUDCLKDIV; // (240MHz/BAUDRATE) in 16.4 format CMSDK_UART2->CTRL = 0x01; // TX, standard UART2 - CMSDK_USRT2->BAUDDIV = 3; // (prescaler value) + CMSDK_USRT2->BAUDDIV = 0xf0; // (prescaler value = ~((div+1)[7:0)) CMSDK_USRT2->CTRL = 0x03; // RX+TX, FT1248 USRT CMSDK_GPIO1->ALTFUNCSET = (1<<5); // UART2 mapped to GP1[5,4] return; @@ -73,7 +73,7 @@ void Uart2StdOutInit(void) /// CMSDK_UART2->CTRL = 0x01; // RX+TX, standard UART2 CMSDK_GPIO1->ALTFUNCSET = (1<<5); // UART2 mapped to GP1[5,4] CMSDK_USRT2->CTRL = 0x00; // RX+TX, FT1248 USRT disabled - CMSDK_USRT2->BAUDDIV = 0x30; // (prescaler low value) + CMSDK_USRT2->BAUDDIV = 0xf0; // (prescaler value = ~((div+1)[7:0)) CMSDK_USRT2->CTRL = 0x03; // RX+TX, FT1248 USRT disabled return; } -- GitLab