脑梗适合吃什么食物| 舌尖长溃疡是什么原因| 千什么百什么| 胃疼发烧是什么原因| 痔疮和肛周脓肿有什么区别| 什么眼霜去皱效果好| 茯苓有什么功效| 教皇是什么意思| 为什么睡觉磨牙| 螃蟹为什么吐泡泡| pcp是什么意思| 9.1什么星座| 卅什么意思| 澄面是什么面粉| 生理反应是什么意思| 锁阳是什么东西| 吃什么长个子最快| dsa检查是什么意思| 扁平疣是什么引起的| 外寒内热感冒吃什么药| 渗液是什么意思| 胎动频繁到什么程度说明缺氧| 诏安是什么意思| 做梦吃鱼是什么意思| 吐黑水是什么原因| 什么是健康| 肋软骨炎挂什么科| 鹅拉绿色粪便是什么病| 毛肚是什么东西| 大满贯什么意思| 吕布属什么生肖| 一笑倾城是什么意思| 圆寂什么意思| 柏拉图式恋爱是什么意思| 榜眼是什么意思| 劳改是什么意思| 和包是什么| dw手表是什么档次| 156是什么意思| 念旧的人是什么样的人| 输卵管造影什么时候检查最好| 无私是什么意思| 双乳增生什么意思| 疑神疑鬼是什么意思| 梦见自己找工作是什么意思| 水杯什么材质好| 涤纶是什么材质| 手表什么牌子| 五级士官是什么级别| 脂膜炎是什么病严重吗| 盆腔炎做什么检查能查出来| 相顾无言是什么意思| 对公转账是什么意思| 男性生殖长水泡是什么原因| 马桶为什么叫马桶| 喝什么茶叶减肥效果最好| 什么是冰晶| 宝宝舌苔白厚是什么原因| 慰安妇什么意思| 数位板是什么| 看演唱会需要准备什么| 运动出汗多是什么原因| 缄默什么意思| 大伽是什么意思| 如果你是什么就什么造句| 什么是空腹血糖| 娃娃鱼吃什么| 造口是什么| 卢森堡为什么那么有钱| 梦见自己杀人了是什么意思| 上火什么症状| 脱脂牛奶适合什么人喝| 6是什么意思网络语言| 俄罗斯被称为什么| 合疗和医保有什么区别| 唇炎是什么原因引起的| 见好就收是什么意思| 慢性扁桃体炎吃什么药| 乌黑对什么| 泥鳅吃什么饲料| abo是什么| 虫草什么时间吃最好| 什么水果补钙| 口苦吃什么中药| 子宫肌瘤有什么症状| 生化常规主要是检查什么的| 寄居蟹用什么水养| 上寒下热体质吃什么中成药| 左眼皮跳什么预兆| 浪是什么意思| 924是什么星座| qs认证是什么意思| 省略号的作用是什么| 浣熊吃什么食物| 9月27是什么星座| 血氯高是什么原因| 先天是什么意思| pigeon是什么牌子自行车| 什么叫批次线| 空窗期是什么| 三查八对的内容是什么| 白带什么时候来| 道德绑架是什么意思| 牙周炎用什么漱口水好| 脾虚挂什么科| 什么是种植牙| 飞字五行属什么| 双相情感障碍吃什么药| 失眠吃什么药效果好| 为什么男生喜欢女生的脚| 裸婚什么意思| 不堪入目是什么意思| 什么属相不能带狗牙| 332是什么意思| 咳血是什么原因引起的| 截单是什么意思| 筋是什么组织| 马黛茶什么味道| 胆囊肿是什么病严重吗| 阴囊湿疹吃什么药| 普通感冒吃什么药| 什么奶茶好喝| 办电话卡需要什么| 什么水不能喝| 杨贵妃是什么生肖| 吃火龙果有什么好处和坏处| 什么是蒙氏教育| 2005年属鸡的是什么命| 血氨高是什么原因| 安享晚年是什么意思| 补脾吃什么好| 牛跟什么相冲| 211大学是什么意思| 卒中中心是什么意思| 气罐和火罐有什么区别| 眼皮重是什么原因| 鸟在家里做窝预示什么| 经常感冒的人吃什么能增强抵抗力| 豆芽炒什么好吃| 为什么会血压低| 生活方式是什么意思| 10月11日是什么星座| py是什么意思| kalenji是什么品牌| 送奶奶什么礼物好| 2001年是什么生肖| 2023年属什么| 晕车药什么时候吃| 什么体质的人戴银变黑| 什么叫做亚健康| 肩膀麻木是什么原因引起的| 出虚汗是什么原因引起的怎么调理| 吃什么菜减肥最快| 世界上有什么花| 黄色上衣配什么颜色裤子| 减肥吃什么| 梦遗是什么原因| 相见恨晚是什么意思| 什么是辅警| 身份证拍照穿什么衣服| 以马内利是什么意思| 心脏早搏吃什么药好| 佛法无边是什么意思| 吃什么不会胖又减肥| 右眼上眼皮跳是什么预兆| 梦游是什么原因造成的| 1900年属什么生肖| 什么鸟叫声最好听| 张一山和杨紫是什么关系| 静脉曲张做什么检查| 胰腺炎吃什么消炎药| 食道疼是什么原因| 茁壮的什么| fda什么意思| 睾丸是什么意思| 四两棉花歇后语是什么| 胆固醇高吃什么| 小狗什么时候断奶| 芒果过敏吃什么药| 吃饼是什么意思| 玮字五行属什么| 发生什么事了| 大圣是什么生肖| 什么水果对胃好| 什么是意境| atp 是什么| 双相障碍是什么| 肾结石什么原因引起的| 五合是什么意思| 基因突变什么意思| 出马什么意思| 衍心念什么| tr是什么| 淋巴结看什么科| 表达什么意思| 宫颈纳囊是什么意思| 高血压中医叫什么| 弥勒佛为什么是未来佛| 色盲的世界是什么颜色| 凉拌菜用什么醋最好| 跳蚤长什么样子| 盆腔积液有什么症状有哪些| 为什么不能空腹吃香蕉| 早餐吃什么不升血糖| 举措前面搭配什么| 血虚吃什么好| 大骨节病是一种什么病| 收官之作什么意思| 肛门长肉球是什么原因| 小孩的指甲脱落是什么原因| 红糖水什么时候喝最好| 四曾念什么| 发霉是什么菌| 铁窗泪什么意思| 59岁生日有什么讲究| 自什么自什么| 肛周水泡是什么病| 代言是什么意思| 什么花好看| aa是什么病| grace是什么意思| 铮铮是什么意思| 四气指的是什么| 什么植物有毒| 为什么打雷| 附身是什么意思| 落寞是什么意思| 吊客是什么意思| 惊恐症是什么病| vvip是什么意思| 尿胆原norm是什么意思| 胆怯是什么意思| dew是什么意思| 奔三是什么意思| 长溃疡是缺什么维生素| 什么水果对嗓子好| 胸口疼挂什么科室| 1994属什么生肖| 天麻与什么煲汤最好| 仲夏夜是什么时候| 家里养什么动物吃蟑螂| 子宫前位什么姿势易孕| 分销是什么意思| 胆结石吃什么药可以化掉结石| 侍寝是什么意思| 什么是手机号| 喝酒后胃疼吃什么药| eb病毒是什么病| 室上速是什么病| cro公司是什么意思| 金丝皇菊有什么功效| 杨桃有什么营养价值| 爱情的故事分分合合是什么歌| ais是什么意思| 蛋白粉适合什么人吃| hairy什么意思| 感冒看什么科| 达喜是什么药| 古代广东叫什么| 鲭鱼是什么鱼| 吃牛油果有什么好处和坏处| u是什么元素| 指骨属于什么骨| 小孩出冷汗是什么原因| 百度

2017开年第一奇葩!两90后美女主播竟直播撕书 !

本文介绍了如何使用AT32F403A开发板,基于V2库通过SPI接口与W25Q128 SPI闪存进行通信。内容包括硬件配置、SPI接口介绍、初始化代码及测试过程,最终实现了读写数据并验证了正确性。
百度 按照这个要求,各选举单位分别组织开展了对自己选出的全国人大代表的培训工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述

硬件

SPI

初始化????

初始化代码

测试

最后


概述

???????? 本文主要是使用AT32F403A开发板,基于V2库实现spi 读取w25q128的功能。

???????? 串口工具使用的Atlink-ez自带的串口功能。

???????? 工程建立、调试工具配置在前面章节有详细介绍。


硬件

????????硬件方面使用的是参考官方AT32F437 SURF板子而设计的一个AT32F403A开发板,板子上的芯片是AT32F403AVGT7的型号,开发板上面还板载了一个atlink-ez的仿真器,atlink-ez除了可以在线仿真和下载之外还有一个串口的功能,硬件上是通过跳线帽接到了MCU的串口1,pa9/10上面。

? ? ? ? ?如下图是开发板pcb图,以及硬件资源。(左边上角的就是atlink-ez,用usb线接到pc即可):


? ? ? ? 实物如下图:

? ? ? ? 本章是使用spi1读取w25q128的flash,相关原理图如下:


SPI

???????? SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,具体的SPI里就不说明,网上有很多的详细讲解的。

???????? AT32F403A多达4个SPI接口,在从或主模式下,全双工和半双工的通信速率可达50兆位/秒。3位的预分频器可 产生8种主模式频率,可配置成每帧8位或16位。


初始化????

???????? SPI的结构体参数:

???????? typedef struct

{

? spi_transmission_mode_type???????????? transmission_mode;???? /*!< transmission mode selection */

? spi_master_slave_mode_type???????????? master_slave_mode;???? /*!< master or slave mode selection */

? spi_mclk_freq_div_type???????????????? mclk_freq_division;??? /*!< master clock frequency division selection */

? spi_first_bit_type???????????????????? first_bit_transmission;/*!< transmit lsb or msb selection */

? spi_frame_bit_num_type??????????????? ?frame_bit_num;???????? /*!< frame bit num 8 or 16 bit selection */

? spi_clock_polarity_type??????????????? clock_polarity;??????? /*!< clock polarity selection */

? spi_clock_phase_type?????????????????? clock_phase;?????????? /*!< clock phase selection */

? spi_cs_mode_type?????????????????????? cs_mode_selection;???? /*!< hardware or software cs mode selection */

} spi_init_type;

???????? transmission_mode:传输模式,全双工,半双工

???????? master_slave_mode:主从模式

???????? mclk_freq_division:分频系数

???????? first_bit_transmission:大小端模式,高位在前还是在后

???????? frame_bit_num:数据帧位数,8bit/16bit

???????? clock_polarity:时钟空闲电平

???????? clock_phase:时钟采样

???????? cs_mode_selection:cs模式,硬件模式/软件模式

????????AT32F403A的spi时钟最高是50M,所以分频也要注意,具体的时钟是spi所挂载的总线的时钟除以分频系数,当需要高的时钟的时候,对pcb要求布线也比较高,一般调试都是把时钟降低。Cs模式,一般常用的是软件cs模式,软件cs模式下可以任意设置一个IO来作为cs,只是需要手动的来拉高和拉低cs。其他的参数一般芯片的驱动都会给出参考。

???????? 本文是通过spi1来对w25q128的读取和写入数据, w25q128是一颗16MB大小的spi falsh存储芯片,每页大小为4k字节,驱动部分从AT32F403A的BSP里面获取。

????????Spi使用的软件的cs模式,所以配置PA15为推挽输出模式,在驱动中需要进行通讯的时候,拉低PA15,通讯完后拉高PA15即可,因为spi是cs低有效。当设置软件cs的时候,可以任意定义一个IO来做cs,不局限于PA15。

? ? ? ? PA15,PB3,PB4,PB5是spi1的重映射IO,所以软件上需要设置spi1的重映射。

????????如下图宏定义:

????????当需要改其他的spi时需要对应的修改上面的宏定义,IO口、时钟等,还需要dma时,还需要修改dma通道。???

初始化代码

void spiflash_init(void)
{
	gpio_init_type gpio_initstructure;
	spi_init_type spi_init_struct;

	crm_periph_clock_enable(SPI_CS_GPIO_GROUP_CLK, TRUE);						//开启spi cs gpio时钟
	crm_periph_clock_enable(SPI_CLK_GPIO_GROUP_CLK, TRUE);						//开启spi clk gpio时钟
	crm_periph_clock_enable(SPI_MISO_GPIO_GROUP_CLK, TRUE);						//开启spi iso gpio时钟
	crm_periph_clock_enable(SPI_MOSI_GPIO_GROUP_CLK, TRUE);						//开启spi osi gpio时钟
	
	crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK, TRUE);						//开启复用时钟
	gpio_pin_remap_config(SWJTAG_MUX_010,TRUE);									//关闭掉jtag,保留swd
	gpio_pin_remap_config(SPI1_MUX_01,TRUE);									//spi io复用到pa15,pb3,pb4,pb5
	
#if defined(SPI_TRANS_DMA)	

	crm_periph_clock_enable(DMA_PERIPH_CLK, TRUE);						//开启dma时钟

#endif
	/* software cs, pb12 as a general io to control flash cs */			//spi cs 脚配置,软件模式,配置为上拉推挽输出
	gpio_initstructure.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;		//推挽模式	
	gpio_initstructure.gpio_pull           = GPIO_PULL_UP;				//上拉
	gpio_initstructure.gpio_mode           = GPIO_MODE_OUTPUT;			//输出
	gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
	gpio_initstructure.gpio_pins           = SPI_CS_PIN;				//cs pin
	gpio_init(SPI_CS_GPIO_GROUP, &gpio_initstructure);

	/* sck */
	gpio_initstructure.gpio_pull           = GPIO_PULL_UP;				//上拉
	gpio_initstructure.gpio_mode           = GPIO_MODE_MUX;				//复用推挽
	gpio_initstructure.gpio_pins           = SPI_CLK_PIN;				//clk pin
	gpio_init(SPI_CLK_GPIO_GROUP, &gpio_initstructure);

	/* miso */
	gpio_initstructure.gpio_pull           = GPIO_PULL_UP;				//上拉
	gpio_initstructure.gpio_mode           = GPIO_MODE_INPUT;			//输入模式,配置为复用推挽也行,但是设置为输入比较规范些。
	gpio_initstructure.gpio_pins           = SPI_MISO_PIN;				//iso pin
	gpio_init(SPI_MISO_GPIO_GROUP, &gpio_initstructure);

	/* mosi */
	gpio_initstructure.gpio_pull           = GPIO_PULL_UP;				//上拉
	gpio_initstructure.gpio_mode           = GPIO_MODE_MUX;				//复用推挽
	gpio_initstructure.gpio_pins           = SPI_MOSI_PIN;				//osi pin
	gpio_init(SPI_MOSI_GPIO_GROUP, &gpio_initstructure);

	FLASH_CS_HIGH();
	crm_periph_clock_enable(SPI_PERIPH_CLK, TRUE);						//开启spi时钟
	spi_default_para_init(&spi_init_struct);
	spi_init_struct.transmission_mode = SPI_TRANSMIT_FULL_DUPLEX;		//全双工模式
	spi_init_struct.master_slave_mode = SPI_MODE_MASTER;				//主模式
	spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_8;				//时钟8分频,120M/8=15M
	spi_init_struct.first_bit_transmission = SPI_FIRST_BIT_MSB;			//大小端,高位在前
	spi_init_struct.frame_bit_num = SPI_FRAME_8BIT;						//数据为8bit模式
	spi_init_struct.clock_polarity = SPI_CLOCK_POLARITY_HIGH;			//配置 SPI 时钟空闲时为高电平
	spi_init_struct.clock_phase = SPI_CLOCK_PHASE_2EDGE;				//配置 SPI 在第二个时钟边沿采样
	spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE;			//软件cs模式
	spi_init(SPIX, &spi_init_struct);									//spi结构体参数设置为以上参数
	spi_enable(SPIX, TRUE);												//使能spi
}

测试

????????测试代码

????????通过写入一段数据后,再读出来进行对比。

? ? ? ?

???????? 测试结果

???????? 对比数据成功通过,测试ok。

最后

???????? 有问题的可以加QQ群技术交流,同时相关代码上传到QQ群中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
小孩缺铁有什么症状 看脑血管挂什么科 豆蔻年华是什么意思 区间是什么意思 圆脸适合什么发型短发
腿部肿胀是什么原因引起的 女人大姨妈来了吃什么最好 红颜薄命的意思是什么 参加白事回来注意什么 肚子疼什么原因
女孩子为什么会痛经 学无止境是什么意思 1月30号是什么星座 痛风是什么病 什么是工作日
乳头痒什么原因 f4是什么意思 安享晚年是什么意思 小清新是什么意思啊 业报是什么意思
空气净化器有什么作用hcv8jop3ns1r.cn 斛什么意思hanqikai.com 烧心吃什么药效果最好hcv8jop1ns8r.cn 为什么总是拉肚子hcv8jop5ns7r.cn 1月8日是什么星座hcv9jop7ns2r.cn
为什么我的眼中常含泪水hcv8jop5ns8r.cn 均码是什么意思hcv8jop8ns7r.cn 爱是什么意思hcv9jop3ns4r.cn 博物馆里有什么hcv8jop3ns4r.cn 金达莱是什么花hcv8jop2ns6r.cn
吃桂圆干有什么好处和坏处hcv8jop8ns7r.cn 太阳像什么hcv8jop7ns4r.cn 甘薯和红薯有什么区别hcv8jop4ns0r.cn 什么大叫hcv9jop5ns0r.cn 拍胸片挂什么科hcv8jop9ns1r.cn
带状疱疹能吃什么hcv8jop2ns4r.cn 塑料五行属什么hcv8jop8ns3r.cn 上不下要念什么hcv9jop1ns8r.cn 右耳朵耳鸣是什么原因hcv7jop6ns2r.cn 12345是什么投诉电话hcv8jop3ns6r.cn
百度