本帖最后由 muyichuan2012 于 2023-5-10 16:18 编辑
#申请原创# @21ic小喇叭 @21ic小喇叭
参考官网的资源,DIY设计了一个AT32F437核心板。
官网资源地址:https://www.arterychip.com/en/product/AT32F437.jsp#Resource
一、AT32F437芯片简介
超高性能——AT32F437系列,搭载ARM ® Cortex ® -M4内核,为世界带来了高达288 MHz的运算速度。内置单精度浮点运算单元(FPU)、数字信号处理器(DSP)和内存保护单元(MPU),具有丰富的外设和灵活的时钟控制机制,适用于广泛的应用。尤其是它最大支持4032 KB Flash和512 KB SRAM,在性能上远超同类产品。
此外,AT32F437系列还提供了Security Library。这个库是在主存中一个由代码保护的定义区域,这样解决方案提供商不仅可以安心地在里面编写核心算法,也可以为下游客户提供二次开发的空间。同时,AT32F437 系列包含 2 个 OTG 控制器(设备模式下无 Xtal)、2 个用于外部 SPI 闪存或 SPI RAM 扩展的 QSPI、8 个 UART、2 个 CAN、4 个 SPI/I²S(2 个全双工)、3 个高速ADC 引擎(5.33 Msps)、8~14 位数字视频并行接口(DVP)、用于扩展 SDRAM、SRAM 和 PSRAM 的 XMC,以及用于物联网应用的 IEEE-802.3 10/100Mbps 以太网端口控制器,大大提高了可靠性,同时降低成本。AT32F437 器件可在 -40 至 105 ℃ 的温度范围内表现良好。它还通过其强大的片上资源分配、更高的集成度和成本效益,提供多种芯片供选择,以应对多样化的内存需求。凭借其出色的性能,AT32F437系列无疑将成为工业自动化、电机控制、物联网和消费电子等需要更高计算和更大内存应用的最佳合作伙伴。
AT32F437芯片系列封装表
这次设计使用了AT32F437ZMT7芯片
二、设计的电路
2.1、设计的电路图
2.2、PCB图
2.3、实物
三、测试
使用官网的例程,测试下SDRAM读写测试,串口打印结果
3.1、BSP下载地址:https://www.arterychip.com/download/BSP/AT32F435_437_Firmware_Library_V2.1.2.zip
3.2、编辑例程
在SDRAM例程中,添加打印函数。
main.c
#include "at32f435_437.h"
#include "at32f435_437_clock.h"
#include "at_surf_f437_board_delay.h"
#include "at_surf_f437_board_sdram.h"
#include "at_surf_f437_board_lcd.h"
#include "at_surf_f437_board_usart.h"
#define BUF_SIZE 4096
uint16_t write_buf[BUF_SIZE];
uint16_t read_buf[BUF_SIZE];
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] compare whether the valus of buffer 1 and buffer 2 are equal.
* @param buffer1: buffer 1 address.
buffer2: buffer 2 address.
* @retval the result of compare.
*/
error_status buffer_compare(uint8_t* buffer1, uint8_t* buffer2, uint32_t len)
{
uint32_t i;
for(i = 0; i < len; i++)
{
if(buffer1[i] != buffer2[i])
{
return ERROR;
}
}
return SUCCESS;
}
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] main program
* @param none
* @retval none
*/
int main(void)
{
uint16_t i;
/* initial system clock */
system_clock_config();
/* initial the nvic priority group */
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
/* initialize delay */
delay_init();
uart_print_init(115200);
/* initialize lcd */
lcd_init(LCD_DISPLAY_VERTICAL);
/* initialize sdram */
sdram_init();
/* display information */
lcd_string_show(10, 20, 200, 24, 24, (uint8_t *)"SDRAM Test");
printf("SDRAM Test\r\n");
/* initialize write buffer */
for(i = 0; i < BUF_SIZE; i++)
{
write_buf[i] = i;
}
/* write data to sdram */
sdram_data_write(0, write_buf, BUF_SIZE);
/* read data from sdram */
sdram_data_read(0, read_buf, BUF_SIZE);
/* compare data */
if(buffer_compare((uint8_t *)write_buf, (uint8_t *)read_buf, BUF_SIZE * 2) == SUCCESS)
{
lcd_string_show(10, 60, 310, 24, 24, (uint8_t *)"sdram write/read ok");
printf("sdram write/read ok\r\n");
}
else
{
lcd_string_show(10, 60, 310, 24, 24, (uint8_t *)"sdram write/read error");
printf("sdram write/read error\r\n");
}
while(1)
{
}
}
3.3 、编译
四、程序运行
4.1、连接下载器
4.2、串口输出
SDRAM测试结果读写正常 。
五、附件 PDF电路图:
SCH_AT32F437_CORE_V1.0.pdf
(569.55 KB)
|
感谢分享,MARK一下,学习了