上海妇科疾病研究所 上海女性不孕医院 上海引产医院 无痛引产痛不痛 上海人流医院 白癜风治疗医院 上海小儿脑瘫医院 上海女子医院
Blackfin的技术文章和教学视频连载10:SPI-Blackfin-技术中心-国内专业ADI仿真器,Blackfin开发板,DSP芯片,软件算法,解决方案提供商-北京四维卓信电子有限公司
用户名: 密码:
主页 设为首页 加入收藏
      产品中心       技术中心       下载中心        社区新闻        诚聘英才       大学计划        关于我们       技术论坛
  您的当前位置:ADSP开源社区 >> 技术中心 >> Blackfin 今天是:
技术中心  
SigmaDSP
SHARC
A2B音频总线
Blackfin
ADI操作系统
ADSP-218X
TigerSAHRC
ADI DSP仿真器
产品导航
ADI DSP仿真器
SigmaDSP开发板
ADI A2B总线开发板
SHARC DSP开发板
销售网络
Blackfin  
Blackfin的技术文章和教学视频连载10:SPI
[ 作者:OP ] [ 来源:ADSP开源社区 ] [ 发布时间:2014-8-8 ]
   还是单独一章讲讲SPI吧。
 
    SPI是非常常见的嵌入式处理器接口,每一个ADI的DSP均有此接口,我们以BF533为例来进行简单讲解,如果有嵌入式开发经验者,一看便知。
 
    BF533的SPI接口是4线串口,可以连接SPIFLASH,SPI 接口的AD,DA 等等。ADSP-BF53x 的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)
 
    SPI的接口寄存器详细说明:
 
    寄存器                 功能
    SPI_CTL                SPI 控制寄存器,配置SPI 工作模式及相位等
    SPI_F/G                SPI 从机选择寄存器,用于选择使用哪一个片选控制设备
    SPI_STAT               SPI 状态寄存器,获取SPI 当前工作状态
    SPI_TDBR               SPI 数据传输寄存器
    SPI_RDBR               SPI 数据接收寄存器
    SPI_SHADOW             SPI_RDBR 的影子寄存器,可用于读取数据
 
    让我们来看一段SPI的代码:
 
*pSPI_BAUD=2; //配置速率为1/4 系统时钟 SPI 速率 = SCLK/2*SPI_BAUD
*pSPI_F/G |=FLS2; //选择SPISEL2 接口
*pSPI_CTL = 0x1001|CPHA| CPOL; //配置模式为手动片选模式
*pSPI_CTL = (*pSPI_CTL | SPE); //使能SPI 接口
*pSPI_F/G &= ~F/G2; //将SPISEL2 拉到0
while(!(*pSPI_STAT & SPIF)); //查看SPI 传输状态是否完成
*pSPI_TDBR = 0x55; //将数据送入SPI 传输数据寄存器
*pSPI_F/G |= F/G2; //将SPISEL2 拉到1,完成数据传输
*pSPI_F/G &= ~F/G2; //将SPISEL2 拉到0
while(*pSPI_STAT & RXS)//查看SPI 传输状态是否有数据需要接收
i = *pSPI_RDBR; //读取数据
*pSPI_F/G |= F/G2; //将SPISEL2 拉到1,完成数据传输
 
    ADSP-BF53x 的SPI 接口支持手动片选和自动片选两种模式,通过SPI_CTL 寄存器的CPHA 和CPOL 位配置,例子代码采用的是手动片选模式,每次读取数据和数据读取结束后需要通过代码来选通和关闭片选,自动片选的例子可以参考我的53x开发板驱动程序中的SD卡驱动代码。
 
    上传一个源码供大家参考,代码实现了采用 SPI 接口发送0x55 数据和读取SPI 接口数据。由于没有相关硬件为 SPI 发送数据,所以代码只是为了学习SPI 接口的使用,实现了读取和传输数据的功能,并不能查看发送数据和读取数据的结果。
 
    SPI的部分我也录过一个教学视频做详细讲解,会再下一章讲完Timer之后一并贴出来!下一章就会说一下Blackfin的Timer。
 
    补一下上面的那段代码的完整源码:
 
    链接: http://pan.baidu.com/s/1i3Lyxe9 密码: opr2
联系我们 | 关于我们 | 免责声明 | 诚征英才 | 友情链接
Copyright 2019 All rights reserved  本网页版权属Open ADSP所有
北京海淀区中关村大街32号新中发市场3659 邮编100100
电话 18611096839 
粤ICP备14035876号-1