Skip to content

Commit

Permalink
lpc176x: Use full peripheral clock speed; fix UART interface
Browse files Browse the repository at this point in the history
Commit ae89a65 caused a regression in the lpc176x UART handling.
After that commit the UART clock divisor would need to be 6.25 on
lpc1768 or 7.5 on lpc1769, but the code only supports whole numbers.

Set the PCLKSELx registers at startup and return to using full speed
peripheral clocks.

Signed-off-by: Kevin O'Connor <[email protected]>
  • Loading branch information
KevinOConnor committed May 5, 2021
1 parent 5fb5b3a commit 45cd354
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
4 changes: 2 additions & 2 deletions lib/lpc176x/device/system_LPC17xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,8 +308,8 @@
#define CCLKCFG_Val 0x00000002
#define USBCLKCFG_Val 0x00000000

#define PCLKSEL0_Val 0x00000000
#define PCLKSEL1_Val 0x00000000
#define PCLKSEL0_Val 0x55515155
#define PCLKSEL1_Val 0x54555455
#define PCONP_Val 0x042887DE
#define CLKOUTCFG_Val 0x00000000

Expand Down
13 changes: 9 additions & 4 deletions lib/lpc176x/lpc176x.patch
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--- device/system_LPC17xx.c 2018-05-02 12:23:57.292132454 -0400
+++ device/system_LPC17xx.c 2018-05-23 20:09:29.681308483 -0400
@@ -297,19 +297,16 @@
+++ device/system_LPC17xx.c 2021-05-04 10:08:17.637502030 -0400
@@ -297,22 +297,19 @@
#define CLKSRCSEL_Val 0x00000001
#define PLL0_SETUP 1

Expand All @@ -26,5 +26,10 @@
+#define CCLKCFG_Val 0x00000002
+#define USBCLKCFG_Val 0x00000000

#define PCLKSEL0_Val 0x00000000
#define PCLKSEL1_Val 0x00000000
-#define PCLKSEL0_Val 0x00000000
-#define PCLKSEL1_Val 0x00000000
+#define PCLKSEL0_Val 0x55515155
+#define PCLKSEL1_Val 0x54555455
#define PCONP_Val 0x042887DE
#define CLKOUTCFG_Val 0x00000000

2 changes: 1 addition & 1 deletion src/lpc176x/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ enable_pclock(uint32_t pclk)
uint32_t
get_pclock_frequency(uint32_t pclk)
{
return CONFIG_CLOCK_FREQ / 4;
return CONFIG_CLOCK_FREQ;
}

// Main entry point - called from armcm_boot.c:ResetHandler()
Expand Down

0 comments on commit 45cd354

Please sign in to comment.