搜索
热门关键词:
AVR
ModelSim
EMC
AC/DC
GPS
手机版
官方微博
微信公众号
登录
|
免费注册
首页
新闻
新品
文章
下载
电路
问答
视频
职场
杂谈
会展
工具
博客
论坛
在线研讨会
技术频道:
单片机/处理器
FPGA
软件/编程
电源技术
模拟电子
PCB设计
测试测量
MEMS
系统设计
无源/分立器件
音频/视频/显示
应用频道:
消费电子
工业/测控
汽车电子
通信/网络
医疗电子
机器人
当前位置:
EEChina首页
›
论坛
›
新手园地
返回列表
查看:
1696
|
回复:
0
【教程10】疯壳·ARM功能手机-SPI教程
[复制链接]
Linda-x
Linda-x
当前离线
积分
9771
发表于 2022-8-16 12:01:16
|
显示全部楼层
|
阅读模式
贸泽电子有奖问答视频,回答正确发放10元微信红包
关键词:
ARM
,
功能手机
,
SPI
,
教程
,
寄存器
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\0.从这里开始\0.开机测试。
SPI实验的
Keil
工程为spi_flash.uvproj,位于目录:
..\WT_Mobile\1.初级教程\DA14580\6_初级_SPI\projects\target_apps\peripheral_examples\spi\spi_flash\Keil_5,如下图所示:
图12
打开串口调试助手连接串口模块。在KEIL中编译源代码,点击DEBUG,然后点击全速运行,就看到串口打印出的读写Flash的信息,如下图所示:
图13
如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系
文件下载请点击:
SPI教程.pdf
(1.03 MB)
2022-8-16 12:00 上传
点击文件名下载附件
相关文章
•
Cadence宣布收购Arm Artisan基础IP业务,强化半导体设计IP组合
•
基于CEC1712实现的处理器SPI FLASH固件安全弹性方案培训教程
•
高通在全球范围内指控 Arm垄断反竞争,芯片架构授权模式面临重构
•
马来西亚与Arm达成十年技术授权协议,推动半导体产业升级
•
Arm 推出全球首个 Armv9 边缘 AI 计算平台,推动物联网实现新一代性能
•
Arm 推出 GitHub Copilot 新扩展程序,助力快速迁移至 Arm 架构服务器
•
明远智睿全志R16核心模组:低成本高性能,解锁你的无限创意!
•
ARM公布2025财年第三财季财报,业绩表现亮眼
•
Arm 发布芯粒系统架构首个公开规范,加速芯片技术演进
•
英伟达携手联发科,将于今年年末推出首款专为Windows on Arm设备设计的系统级芯片(SoC)
回复
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
工业/测控
站务发展
PCB设计
软件编程/OS
关于我们
-
服务条款
-
使用指南
-
站点地图
-
友情链接
-
联系我们
电子工程网
© 版权所有
京ICP备16069177号
| 京公网安备11010502021702
快速回复
返回顶部
返回列表