ADI Blackfin DSP处理器-BF533的开发详解7:SPI接口的驱动和应用(含源代码)
硬件准备
ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器
软件准备
Visual DSP++软件
硬件链接
接口功能介绍
SPI 接口是 4 线串口,可以连接 SPIFLASH,SPI 接口的 AD,DA 等等。ADSP-BF533 的 SPI 接口支持主机模式和从机模式,它有 7 个 SPI 从机片选,在主机模式下,它同时可以挂载 7 个 SPI 设备,还可以在主机模式或从机模式下进行 BOOT 启动。
SPI 管脚定义:
MOSI:主输入从输出接口,根据主机和设备模式确定功能
MISO:从输入主输出接口,根据主机和设备模式确定功能
SCK:SPI 时钟
SPISELx SPI:设备选则接口
SPISS SPI:从机片选接口
SPI 接口时钟最快可以到系统时钟的 1/4,其配置公式为:
SCK Frequency = (Peripheral clock frequency SCLK)/(2 x SPI_BAUD)
接口寄存器说明
核心代码分析
pSPI_BAUD=2; //配置速率为 1/4 系统时钟 SPI 速率 = SCLK/2SPI_BAUD
*pSPI_FLG |=FLS2; //选择 SPISEL2 接口
*pSPI_CTL = 0x1001|CPHA| CPOL; //配置模式为手动片选模式
*pSPI_CTL = (*pSPI_CTL | SPE); //使能 SPI 接口
*pSPI_FLG &= ~FLG2; //将 SPISEL2 拉到 0
while(!(*pSPI_STAT & SPIF)); //查看 SPI 传输状态是否完成
*pSPI_TDBR = 0x55; //将数据送入 SPI 传输数据寄存器
*pSPI_FLG |= FLG2; //将 SPISEL2 拉到 1,完成数据传输
*pSPI_FLG &= ~FLG2; //将 SPISEL2 拉到 0
while(*pSPI_STAT & RXS)//查看 SPI 传输状态是否有数据需要接收
i = *pSPI_RDBR; //读取数据
*pSPI_FLG |= FLG2; //将 SPISEL2 拉到 1,完成数据传输
ADSP-BF53x 的 SPI 接口支持手动片选和自动片选两种模式,通过 SPI_CTL 寄存器的 CPHA 和 CPOL 位配置,例子代码采用的是手动片选模式,每次读取数据和数据读取结束后需要通过代码来选通和关闭片选,自动片选的例子可以参考板卡驱动程序中的 SD 卡驱动代码。
代码实现功能
代码实现了采用 SPI 接口发送 0x55 数据和读取 SPI 接口数据。由于没有相关硬件为 SPI 发送数据,所以代码只是为了学习 SPI 接口的使用,实现了读取和传输数据的功能,并不能查看发送数据和读取数据的结果。
运行程序后,SPI 接口发送数据 0x55 后读取 SPI 接口数据。
#include <cdefBF533.h>
unsigned char buff_w[512];
unsigned char buff_r[512];
void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void Set_PLL(int pmsel,int pssel)
{
int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}
void SPI_init(void)
{
pSPI_BAUD=2; //配置速率为1/4系统时钟 SPI速率 = SCLK/2SPI_BAUD
*pSPI_FLG |=FLS2; //选择SPISEL2接口
*pSPI_CTL = 0x1001|CPHA| CPOL; //配置模式为手动片选模式
*pSPI_CTL = (*pSPI_CTL | SPE); //使能SPI接口
}
int main()
{
int i;
Set_PLL(16,4);
Init_EBIU();
SPI_init();
*pSPI_FLG &= ~FLG2; //将SPISEL2拉到0
while(!(*pSPI_STAT & SPIF)); //查看SPI传输状态是否完成
*pSPI_TDBR = 0x55; //将数据送入SPI传输数据寄存器
*pSPI_FLG |= FLG2; //将SPISEL2拉到1,完成数据传输 *pSPI_FLG &= ~FLG2;
while(*pSPI_STAT & RXS)//查看SPI传输状态是否有数据需要接收
i = *pSPI_RDBR; //读取数据
*pSPI_FLG |= FLG2;
while(1);
}
ADI Blackfin DSP处理器-BF533的开发详解7:SPI接口的驱动和应用(含源代码)相关推荐
- ADI Blackfin DSP处理器-BF533的开发详解15:RS232串口的实现(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 实现原理 ADSP-EDU-B ...
- ADI Blackfin DSP处理器-BF533的开发详解31:汉字/ASIC II 字库(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 功能介绍 代码实现了汉字库和 ASIC II ...
- ADI Blackfin DSP处理器-BF533的开发详解16:KEY按键的实现(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 实现原理 ADSP-EDU-B ...
- ADI Blackfin DSP处理器-BF533的开发详解4:中断的使用方法(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF533的 16 个 ...
- ADI Blackfin DSP处理器-BF533的开发详解28:SD卡的文件系统(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 功能介绍 代码实现了通过文件系统读取 SD 卡 ...
- ADI Blackfin DSP处理器-BF533的开发详解68:电子琴的小应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了触摸屏电子琴的功能,运 ...
- ADI Blackfin DSP处理器-BF533的开发详解10:SPORT-IIS口驱动和应用(含源代码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 接口功能介绍 ADSP-BF533上有两个 S ...
- ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备
BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...
- ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)
我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧. 硬件准 ...
- ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)
硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...
最新文章
- 支付宝支付 第十二集:狂神、飞哥支付宝支付配置代码(免费资源,拿走不谢)
- HanLP极致简繁转换详细讲解
- javaCh6课堂测试
- linux中/bin和/sbin和/usr/bin和/usr/sbin
- 我画着图,FluentAPI 她自己就生成了
- 【树莓派学习笔记】八、两步安装VS Code (Visual Studio Code)
- ZeroMemory(百度百科 ZeroMemory)
- GNS3 VM 的安装使用和路由器的添加
- python10的负n次方_python的次方
- JDK正式免费、Log4j2爆核弹级漏洞、LayUI下线,2021的10 件大事
- 从身边的移动支付说起
- Python数据库开发之-pymysql模块
- Linux解决僵尸进程的几种方式,SIGCHLD信号设置SIG_IGN处理方式等
- mysql数据库备份方式
- 《Android源码设计模式解析与实战》读书笔记(十四)
- Python小白到老司机,快跟我上车!基础篇(十八)
- IBM MQ运维常用命令
- Minecraft 1.16.5 生化8 模组(重制版) 自行火炮登场
- html/css 锚点链接
- 2021年危险化学品经营单位安全管理人员考试题库及危险化学品经营单位安全管理人员模拟考试题