当前位置: 首页 > news >正文

关于AT32部分芯片带有SPIM,如何开启外部flash和SPIM驱动的代码分享

1.以AT32F407,w25q128v举例子

⬇️点击查看代码
⬇️点击查看代码

点击查看代码
void FLASH_InitExtFlash(void)
{GPIO_InitType GPIO_InitStructure;/* Enable ext.flash GPIO clock */RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_AFIO|RCC_APB2PERIPH_GPIOA|RCC_APB2PERIPH_GPIOB, ENABLE);/* Configure ext.flash pin */GPIO_InitStructure.GPIO_Pins = SPIM_SCK;//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// 推挽输出模式GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;	// GPIO最大速度为50MHzGPIO_Init(SPIM_SCK_PORT, &GPIO_InitStructure); //GPIO_InitStructure.GPIO_Pins = SPIM_CS;//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// 推挽输出模式GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;	// GPIO最大速度为50MHzGPIO_Init(SPIM_CS_PORT, &GPIO_InitStructure); //GPIO_InitStructure.GPIO_Pins = SPIM_IO0;//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// 推挽输出模式GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;	// GPIO最大速度为50MHzGPIO_Init(SPIM_IO0_PORT, &GPIO_InitStructure); //GPIO_InitStructure.GPIO_Pins = SPIM_IO1;//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// 推挽输出模式GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;	// GPIO最大速度为50MHzGPIO_Init(SPIM_IO1_PORT, &GPIO_InitStructure); //GPIO_InitStructure.GPIO_Pins = SPIM_IO2;//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// 推挽输出模式GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;	// GPIO最大速度为50MHzGPIO_Init(SPIM_IO2_PORT, &GPIO_InitStructure); //GPIO_InitStructure.GPIO_Pins = SPIM_IO3;//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;// 推挽输出模式GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;	// GPIO最大速度为50MHzGPIO_Init(SPIM_IO3_PORT, &GPIO_InitStructure); ///* Select PB10, PB11 as SPIF_TX and SPIF_RX */GPIO_PinsRemapConfig(GPIO_Remap_EXT_FLASH, ENABLE);//使能选择使用外部 SPI Flash。/*选择 SPIM 接口的 IO 复用功能。000: SCK/PB1 CS/PA8 IO0/PA11 IO1/PA12IO2/PB7 IO3/PB6001: SCK/PB1 CS/PA8 IO0/PB10 IO1/PB11IO2/PB7 IO3/PB6*/#if 1	//SCK/PB1 CS/PA8 IO0/PA11 IO1/PA12GPIO_PinsRemapConfig(AFIO_MAP7_SPIF_1000, ENABLE);#else	//SCK/PB1 CS/PA8 IO0/PB10 IO1/PB11GPIO_PinsRemapConfig(AFIO_MAP7_SPIF_1000, ENABLE);#endif/* In this example, use on-board EN25QH128A as ext.flash */FLASH->B3SEL = FLASH_SPIM_TYPE2;/* Unlock the ext.flash program erase controller */while (BIT_READ(FLASH->STS3, FLASH_STS_BSY));FLASH->FCKEY3 = FLASH_KEY1;FLASH->FCKEY3 = FLASH_KEY2;while (BIT_READ(FLASH->CTRL3, FLASH_CTRL_LCK));/* If the data written to ext.flash need to be scrambled, please specify the scrambled range */FLASH->DA = 0;return;
}
⬆️点击查看代码

⬆️点击查看代码

FLASH->B3SEL配置类型通过数据手册判断:

4e10b270a5d94e29ffa2b5a5e4d404eb

REMAP_0和REMAP_1是用来选择外设复用引脚配置。寄存器配置如下:

image

REMAP_0对应寄存器EXT_SPIF_GRMP[2:0]=000的硬件复用配置;REMAP_1对应对应寄存器EXT_SPIF_GRMP[2:0]=001的硬件复用配置

在使用Keil环境中配置SPIM的时候,需要选择Flash烧录算法文件,但是雅特力官方给了4个SPIM的配置文件,但是没有给出选择说明。选择Flash算法文件是要根据FLASH->B3SEL选择的类型type和REMAP来决定,通过上面我介绍的情况可以确定,我使用的是type1和remap_0

image

http://www.rkmt.cn/news/48249.html

相关文章:

  • 2025东莞食材配送/生鲜食材/食堂配送厂家推荐广东山农农业集团,新鲜直达服务优!
  • 2025年有实力的物流热销口碑榜
  • 2025东莞蔬菜/生鲜/食材配送推荐,广东山农农业集团食堂专供新鲜直达
  • 2025年别墅供暖厂家权威推荐榜单:斯密锅炉/别墅供暖方案/联排别墅供暖源头厂家精选
  • 梯度下降的学习率与批大小
  • 2025年可靠的西铁城机床代理商用户推荐榜
  • 习题解析之:本月天数
  • C4D 2026.0 发布!渲染提速 40%,千万面场景流畅拿捏
  • 2025年优质的云计算就业岗位高薪就业推荐
  • 私有部署|基于Ansible的运维自动化作业平台 - ops
  • HTTP请求在网络中传输的完整路径
  • Python篇】Python基础–Python基本操作
  • 2025年评价高的轩恩档案管理系统行业应用解决方案推荐榜
  • 2025年专业的装修全屋定制行业口碑排行榜
  • 2025酒店防风卷帘供应厂家推荐榜单
  • 2025年靠谱的格力空调代理值得信赖机构榜单
  • 2025年比较好的标书制作品牌推荐榜
  • 五分钟构建智能知识库:AI如何重塑知识管理
  • 2025年比较好的酒会活动策划行业影响力品牌榜
  • 2025年广州包车品牌排行榜
  • 利用粒子群优化算法进行大地电磁视电阻率反演
  • 2025 年 11 月新风系统厂家推荐排行榜,电竞网咖酒店棋牌室KTV洗浴商场办公室别墅大宅学校诊所中医馆会所美容院,商用家用全热交换极寒地区适用精选
  • 2025年联合办公室服务口碑排行榜单
  • 国产文件传输系统是什么?主要优势有哪些?
  • CompletableFuture的5大坑!
  • 2025年移动遮阳蓬产品排行榜单
  • 2025年11月精华液推荐榜:敏感肌适配与成分渗透技术排行
  • 2025年知名的冷拉异型钢光圆厂家最新权威推荐排行榜
  • 2025年机械、车辆与智能控制国际学术会议(ICMVIC 2025)
  • 2025年评价高的老坛泡椒酱行业内知名厂家排行榜