本帖最后由 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, 下载次数: 20)
|