完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ARM功能手机 ——疯壳·开发板系列 SPI教程 图1 第一节SPI Flash硬件电路 SPI_Flash可用于存储程序以及一些数据,如果需要存储程序则必须连接在规定的引脚,开发板上选用的MCU引脚分别为:P00,P03,P05,P06,如下图所示: 图2 第二节 SPI+寄存器 2.1 SPI+介绍 这个接口支持SPI总线的一个子集。这个串行接口在主/从模式可以发送和接收8、16或32位,并且在主模式可以发送9位。SPI+接口有双向的2×16位字的FIFO,功能得到了增强。 该接口可以工作在主或从模式;有8、9、16、32位的操作方式;SPI控制器的时钟达到16MHz,SPI时钟源可以通过编程进行1、2、4、8分频;SPI的时钟线达到8MHz;支持SPI的0、1、2、3四种工作模式;SPI_DO的空闲电平可以通过编程设置;可屏蔽的中断发生器;单向读和写模式降低总线负载。 2.2 寄存器介绍 2.2.1 SPI控制寄存器0 图3 15位:SPI_EN引脚是否有效,’0’表示无效,’1’表示有效; 14位:SPI中断使能位,’0’表示无效,’1’表示有效; 13位:’0’表示接收寄存器或FIFO为空,’1’表示SPI中断,数据已经被发送或接收,该位必须通过软件写SPI_CLR_INT_REG清零; 12位:返回SPI_DI引脚的状态值; 11位:‘0’表示发送FIFO满,‘1’表示发送FIFO空; 10位:‘0’正常模式,‘1’使SPIDO的值等于SPI_DO的值; 9位:‘0’正常操作,‘1’复位SPI; 8:7位:SPI数据格式; 6位:SPI工作模式,‘0’为主设备,‘1’为从设备; 5位:当SPI处于空闲模式或者当SPI_FORCE_DO=1时引脚SPI_DO的值; 4:3位:SPI在主模式下的时钟频率选择; 2位:SPI时钟初始电平的高低,‘0’为低,‘1’为高; 1位:SPI时钟的相位选择,具体看SPI的时序图;(SPI的资料) 0位:SPI的开关。 2.2.2 SPI接收/发送寄存器0 图4 15:0位:SPI发送或接收的数据,写操作是,存储发送的数据,读操作时,为接收到的数据。 2.2.3 SPI接收/发送寄存器1 图5 15:0位:SPI发送或接收的数据,写操作是,存储发送的数据,读操作时,为接收到的数据;为32位模式的高16位数据。 2.2.4 SPI清除中断寄存器 图6 15:0位:写任意值到该寄存器清除SPI的中断标志。 2.2.5 SPI控制寄存器1 图7 15:5位:保留不使用; 4位:决定在9位模式下的第一位的值; 3位:SPI忙标志位,‘0’表示SPI空闲,‘1’表示SPI忙; 2位:SPI优先级选择位,‘0’低优先级,‘1’高优先级; 1:0位:SPI_FIFO模式。 2.3 寄存器配置讲解 #define CLK_PER_REG (* ( volatile uint16*)0x50000004) #define SPI_CTRL_REG (* ( volatile uint16*)0x50001200) #define SPI_RX_TX_REG0 (* ( volatile uint16*)0x50001202) #define SPI_RX_TX_REG1 (* ( volatile uint16*)0x50001204) #define SPI_CLEAR_INT_REG (* ( volatile uint16*)0x50001206) #define SPI_CTRL_REG1 (* ( volatile uint16*)0x50001208) 启动SPI模块的时钟:CLK_PER_REG |= 0x0800; SPI的初始化配置寄存器: 先关闭SPI, SPI_CTRL_REG =0x8000; SPI配置为8位模式,主模式,时钟空闲为低电平,相位模式0,关闭SPI中断,时钟8分频(0x1000000000000000),则SPI_CTRL_REG =0x8000; 开SPI, SPI_CTRL_REG | =0x0001; 发送一个字节0x55,将数据填充进发送寄存器SPI_RX_TX_REG0 = 0x55;等待发送寄存器为空while(SPI_CTRL_REG&0x2000); 接收一个字节,读取接收寄存器rx_data = SPI_RX_TX_REG; 第三节 SPI实验 实验需要使用的模块有:手机开发板底板,Jlink调试工具,USB转串模块、杜邦线、3.7V锂电池或Mocro USB线。 使用USB转串模块连接手机蓝牙串口,连接方式如下: (1)USB转串模块一端只需要使用杜邦线连接RXD、TXD、GND三个引脚,如下图所示: 图8 (2)手机主控底板一端需要使用杜邦线连接左侧J7三个引脚,与USB转串模块的引脚一一对应(串口引脚交叉),分别为RXD-->TXD、TXD-->RXD、GND-->GND,如下图所示: 图9 使用JLINK通过杜邦线连接手机蓝牙,连接方式如下: (1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示: 图10 (2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示: 图11 将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..WT_Mobile .从这里开始 .开机测试。 SPI实验的Keil工程为spi_flash.uvproj,位于目录: ..WT_Mobile1.初级教程DA145806_初级_SPIprojectstarget_appsperipheral_examplesspispi_flashKeil_5,如下图所示: 图12 打开串口调试助手连接串口模块。在KEIL中编译源代码,点击DEBUG,然后点击全速运行,就看到串口打印出的读写Flash的信息,如下图所示: 图13 完整配套资料和对应开源套件地址:http://www.fengke.club 如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系 文件下载请点击:
SPI教程.pdf
(1.03 MB, 下载次数: 0
)
|
|
相关推荐
|
|
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11779 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 02:08 , Processed in 0.845904 second(s), Total 65, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号