[bsp/es32f0654] switch system clock from 24MHz to 48MHz

This commit is contained in:
wangyq2018 2019-03-01 17:34:21 +08:00
parent 8eb7e02d7b
commit abd83b10df
7 changed files with 48 additions and 40 deletions

View File

@ -9,7 +9,7 @@
### 1.1 开发板介绍 ### 1.1 开发板介绍
主要内容如下: 主要内容如下:
ES-PDS-ES32F0654 是东软载波微电子官方推出的一款基于 ARM Cortex-M0 内核的开发板,最高主频为 48Mhz(实际使用24Mhz),可满足基础功能测试及高端功能扩展等开发需求。 ES-PDS-ES32F0654 是东软载波微电子官方推出的一款基于 ARM Cortex-M0 内核的开发板,最高主频为 48MHz,可满足基础功能测试及高端功能扩展等开发需求。
开发板外观如下图所示: 开发板外观如下图所示:
@ -19,12 +19,13 @@ ES-PDS-ES32F0654-V1.0
该开发板常用 **板载资源** 如下: 该开发板常用 **板载资源** 如下:
- MCUES32F0654LT主频 24MHz256KB FLASH32KB RAM54 GPIOs - MCUES32F0654LT主频 48MHz32KB SRAM256KB FLASH54 GPIOs
- 外部 FLASHW25Q128SPI16MB、EEPROM24c02 - 外部模块SPI FLASH (MX25L648MB)、I2C EEPROM (M24C04512B)
- 常用外设 - 常用外设
- LED2个(红色PC8-PC9) - 可调电阻1个(PB00)
- LED2个(PC8/PC9)
- 按键3个K1(PF00)K2PF01)RESET(MRST) - 按键3个K1(PF00)K2PF01)RESET(MRST)
- 常用接口:串口、GPIO、SPI、I2C - 常用接口GPIO、UART、SPI、I2C
- 调试接口ESLinkⅡ(EastSoft 官方推出的开发工具有标准版和mini版两种版本均自带 CDC 串口功能) SWD 下载 - 调试接口ESLinkⅡ(EastSoft 官方推出的开发工具有标准版和mini版两种版本均自带 CDC 串口功能) SWD 下载
外设支持: 外设支持:

View File

@ -42,14 +42,11 @@ void NVIC_Configuration(void)
*******************************************************************************/ *******************************************************************************/
void SystemClock_Config(void) void SystemClock_Config(void)
{ {
/* hosc 8MHz, from hosc/2 pll to 48MHz */ /* hosc 12MHz, from hosc/3 pll to 48MHz */
cmu_pll1_config(CMU_PLL1_INPUT_HOSC_2, CMU_PLL1_OUTPUT_48M); cmu_pll1_config(CMU_PLL1_INPUT_HOSC_3, CMU_PLL1_OUTPUT_48M);
/* MCLK 48MHz*/ /* MCLK 48MHz*/
cmu_clock_config(CMU_CLOCK_PLL1, 48000000); cmu_clock_config(CMU_CLOCK_PLL1, 48000000);
/* SYSCLK 24MHz */
cmu_div_config(CMU_SYS, CMU_DIV_2);
} }
/******************************************************************************* /*******************************************************************************

View File

@ -60,7 +60,7 @@ static const struct pin_index pins[] =
__ES32F0_PIN(27, B, 1), __ES32F0_PIN(27, B, 1),
__ES32F0_PIN(28, B, 2), __ES32F0_PIN(28, B, 2),
__ES32F0_PIN(29, B, 10), __ES32F0_PIN(29, B, 10),
__ES32F0_PIN_DEFAULT, __ES32F0_PIN(30, B, 11),
__ES32F0_PIN_DEFAULT, __ES32F0_PIN_DEFAULT,
__ES32F0_PIN_DEFAULT, __ES32F0_PIN_DEFAULT,
__ES32F0_PIN(33, B, 12), __ES32F0_PIN(33, B, 12),

View File

@ -28,6 +28,7 @@ rt_err_t spi_configure(struct rt_spi_device *device,
spi_handle_t *hspi; spi_handle_t *hspi;
hspi = (spi_handle_t *)device->bus->parent.user_data; hspi = (spi_handle_t *)device->bus->parent.user_data;
/* config spi mode */
if (cfg->mode & RT_SPI_SLAVE) if (cfg->mode & RT_SPI_SLAVE)
{ {
hspi->init.mode = SPI_MODE_SLAVER; hspi->init.mode = SPI_MODE_SLAVER;
@ -77,14 +78,36 @@ rt_err_t spi_configure(struct rt_spi_device *device,
{ {
hspi->init.ss_en = ENABLE; hspi->init.ss_en = ENABLE;
} }
/* config spi clock */
if (cfg->max_hz >= cmu_get_pclk1_clock() / 2) if (cfg->max_hz >= cmu_get_pclk1_clock() / 2)
{
/*pclk1 max speed 48MHz, spi master max speed 10MHz*/
if (cmu_get_pclk1_clock() / 2 <= 10000000)
{ {
hspi->init.baud = SPI_BAUD_2; hspi->init.baud = SPI_BAUD_2;
} }
else if (cfg->max_hz >= cmu_get_pclk1_clock() / 4) else if (cmu_get_pclk1_clock() / 4 <= 10000000)
{ {
hspi->init.baud = SPI_BAUD_4; hspi->init.baud = SPI_BAUD_4;
} }
else
{
hspi->init.baud = SPI_BAUD_8;
}
}
else if (cfg->max_hz >= cmu_get_pclk1_clock() / 4)
{
/*pclk1 max speed 48MHz, spi master max speed 10MHz*/
if (cmu_get_pclk1_clock() / 4 <= 10000000)
{
hspi->init.baud = SPI_BAUD_4;
}
else
{
hspi->init.baud = SPI_BAUD_8;
}
}
else if (cfg->max_hz >= cmu_get_pclk1_clock() / 8) else if (cfg->max_hz >= cmu_get_pclk1_clock() / 8)
{ {
hspi->init.baud = SPI_BAUD_8; hspi->init.baud = SPI_BAUD_8;
@ -215,7 +238,7 @@ int es32f0_spi_register_bus(SPI_TypeDef *SPIx, const char *name)
} }
else if (SPIx == SPI1) else if (SPIx == SPI1)
{ {
_spi1.perh = SPI0; _spi1.perh = SPI1;
spi_bus = &_spi_bus1; spi_bus = &_spi_bus1;
spi = &_spi1; spi = &_spi1;

View File

@ -42,7 +42,6 @@ static rt_err_t es32f0x_configure(struct rt_serial_device *serial, struct serial
gpio_init_initstructure.type = GPIO_TYPE_TTL; gpio_init_initstructure.type = GPIO_TYPE_TTL;
#ifdef BSP_USING_UART0 #ifdef BSP_USING_UART0
gpio_init_initstructure.func = GPIO_FUNC_3; gpio_init_initstructure.func = GPIO_FUNC_3;
gpio_init(GPIOB, GPIO_PIN_10, &gpio_init_initstructure); gpio_init(GPIOB, GPIO_PIN_10, &gpio_init_initstructure);
@ -51,11 +50,9 @@ static rt_err_t es32f0x_configure(struct rt_serial_device *serial, struct serial
gpio_init(GPIOB, GPIO_PIN_11, &gpio_init_initstructure); gpio_init(GPIOB, GPIO_PIN_11, &gpio_init_initstructure);
NVIC_EnableIRQ(UART0_IRQn); NVIC_EnableIRQ(UART0_IRQn);
#endif /* uart0 gpio init */ #endif /* uart0 gpio init */
#ifdef BSP_USING_UART1 #ifdef BSP_USING_UART1
gpio_init_initstructure.func = GPIO_FUNC_3; gpio_init_initstructure.func = GPIO_FUNC_3;
gpio_init(GPIOC, GPIO_PIN_10, &gpio_init_initstructure); gpio_init(GPIOC, GPIO_PIN_10, &gpio_init_initstructure);
@ -64,11 +61,9 @@ static rt_err_t es32f0x_configure(struct rt_serial_device *serial, struct serial
gpio_init(GPIOC, GPIO_PIN_11, &gpio_init_initstructure); gpio_init(GPIOC, GPIO_PIN_11, &gpio_init_initstructure);
NVIC_EnableIRQ(UART1_IRQn); NVIC_EnableIRQ(UART1_IRQn);
#endif /* uart1 gpio init */ #endif /* uart1 gpio init */
#ifdef BSP_USING_UART2 #ifdef BSP_USING_UART2
gpio_init_initstructure.func = GPIO_FUNC_5; gpio_init_initstructure.func = GPIO_FUNC_5;
gpio_init(GPIOC, GPIO_PIN_12, &gpio_init_initstructure); gpio_init(GPIOC, GPIO_PIN_12, &gpio_init_initstructure);
@ -77,11 +72,9 @@ static rt_err_t es32f0x_configure(struct rt_serial_device *serial, struct serial
gpio_init(GPIOD, GPIO_PIN_2, &gpio_init_initstructure); gpio_init(GPIOD, GPIO_PIN_2, &gpio_init_initstructure);
NVIC_EnableIRQ(BS16T1_UART2_IRQn); NVIC_EnableIRQ(BS16T1_UART2_IRQn);
#endif /* uart2 gpio init */ #endif /* uart2 gpio init */
#ifdef BSP_USING_UART3 #ifdef BSP_USING_UART3
gpio_init_initstructure.func = GPIO_FUNC_4; gpio_init_initstructure.func = GPIO_FUNC_4;
gpio_init(GPIOC, GPIO_PIN_4, &gpio_init_initstructure); gpio_init(GPIOC, GPIO_PIN_4, &gpio_init_initstructure);
@ -90,7 +83,6 @@ static rt_err_t es32f0x_configure(struct rt_serial_device *serial, struct serial
gpio_init(GPIOC, GPIO_PIN_5, &gpio_init_initstructure); gpio_init(GPIOC, GPIO_PIN_5, &gpio_init_initstructure);
NVIC_EnableIRQ(BS16T2_UART3_IRQn); NVIC_EnableIRQ(BS16T2_UART3_IRQn);
#endif /* uart3 gpio init */ #endif /* uart3 gpio init */
uart->huart.init.mode = UART_MODE_UART; uart->huart.init.mode = UART_MODE_UART;

View File

@ -22,11 +22,11 @@
</DaveTm> </DaveTm>
<Target> <Target>
<TargetName>rt-thread_es32f065x</TargetName> <TargetName>rt-thread</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<TargetOption> <TargetOption>
<CLKADS>24000000</CLKADS> <CLKADS>12000000</CLKADS>
<OPTTT> <OPTTT>
<gFlags>1</gFlags> <gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd> <BeepAtEnd>1</BeepAtEnd>
@ -73,11 +73,11 @@
<LExpSel>0</LExpSel> <LExpSel>0</LExpSel>
</OPTXL> </OPTXL>
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget> <IsCurrentTarget>1</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>255</CpuCode> <CpuCode>0</CpuCode>
<DebugOpt> <DebugOpt>
<uSim>0</uSim> <uSim>0</uSim>
<uTrg>1</uTrg> <uTrg>1</uTrg>
@ -95,7 +95,7 @@
<tRmem>1</tRmem> <tRmem>1</tRmem>
<tRfunc>0</tRfunc> <tRfunc>0</tRfunc>
<tRbox>1</tRbox> <tRbox>1</tRbox>
<tRtrace>0</tRtrace> <tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw> <sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw> <tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb> <sRunDeb>0</sRunDeb>
@ -117,18 +117,13 @@
<TargetDriverDllRegistry> <TargetDriverDllRegistry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>CMSIS_AGDI</Key> <Key>JL2CM3</Key>
<Name>-X"Any" -UAny -O206 -S0 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0ES32F065x -FS00 -FL040000</Name> <Name>-U12345678 -O78 -S4 -ZTIFSpeedSel2000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0ES32F065x.FLM -FS00 -FL040000 -FP0($$Device:ES32F0654LT$Flash\ES32F065x.FLM)</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>UL2CM3</Key> <Key>UL2CM3</Key>
<Name>UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0es32f0xx -FL040000 -FS00 -FP0($$Device:ES32F0654LT$Flash\es32f0xx.FLM)</Name> <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0ES32F065x -FS00 -FL040000 -FP0($$Device:ES32F0654LT$Flash\ES32F065x.FLM))</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>JL2CM3</Key>
<Name>-U12345678 -O78 -S4 -ZTIFSpeedSel2000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0ES32F065x -FS00 -FL040000</Name>
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint/> <Breakpoint/>

View File

@ -7,7 +7,7 @@
<Targets> <Targets>
<Target> <Target>
<TargetName>rt-thread_es32f065x</TargetName> <TargetName>rt-thread</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<TargetOption> <TargetOption>