创龙OMAPL138的SPI FLASH读写
1. 目前最大的疑问是OMAPL138和DSP6748的DSP部分是完全一样的吗(虽然知道芯片完全是引脚兼容的)?因此现在使用OMAPL138的DSP内核去读写一下外部的SPI FLASH芯片,先看下原理图,可惜创龙核心板的原理图不开源,所以我肯定不买他们家的板子

2. 尤其是startware这个软件库,究竟是用在ARM还是DSP的怎么区分?看资料ARM似乎可以唤醒DSP核?
3. 心血来潮,测试一下,同一个工程是不是可以同时用在ARM和DSP内核上,只是用不用的GEL文件。经过测试发现,如果建立的工程,选的器件是DSP6748,那么生成的.out文件可以用于DSP核,如果选择的是ARM-OMAPL138那么生成的.out用于ARM核,原来是建立工程的时候选择是ARM核还是DSP核

4. 言归正传,本来是搞SPI FLASH的,话题跑远了
void SPIInterruptInit(void)
{
// 注册中断服务函数
IntRegister(C674X_MASK_INT4, SPIIsr); // 映射中断事件
IntEventMap(C674X_MASK_INT4, SYS_INT_SPI1_INT); // 使能可屏蔽中断
IntEnable(C674X_MASK_INT4);
} /****************************************************************************/
/* */
/* SPI 初始化 */
/* */
/****************************************************************************/
void SPIInit(void)
{
unsigned char cs = 0x01;
unsigned char dcs = 0x01;
unsigned int val = SIMO_SOMI_CLK_CS; SPIReset(SOC_SPI_1_REGS); SPIOutOfReset(SOC_SPI_1_REGS); SPIModeConfigure(SOC_SPI_1_REGS, SPI_MASTER_MODE); SPIClkConfigure(SOC_SPI_1_REGS, , , SPI_DATA_FORMAT0); SPIPinControl(SOC_SPI_1_REGS, , , &val); SPIDefaultCSSet(SOC_SPI_1_REGS, dcs); // 配置 SPI 数据格式
SPIDataFormatConfig(SPI_DATA_FORMAT0); // 配置 SPI 数据格式及片选信号
SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), cs); // 映射中断到 INT1
SPIIntLevelSet(SOC_SPI_1_REGS, SPI_RECV_INTLVL | SPI_TRANSMIT_INTLVL); // 使能 SPI
SPIEnable(SOC_SPI_1_REGS);
}
/****************************************************************************/
/* */
/* 配置 SPI 数据格式 */
/* */
/****************************************************************************/
void SPIDataFormatConfig(unsigned int dataFormat)
{
// 配置 SPI 时钟
SPIConfigClkFormat(SOC_SPI_1_REGS,
(SPI_CLK_POL_HIGH | SPI_CLK_INPHASE),
dataFormat); // 配置 SPI 发送时 MSB 优先
SPIShiftMsbFirst(SOC_SPI_1_REGS, dataFormat); // 设置字符长度
SPICharLengthSet(SOC_SPI_1_REGS, CHAR_LENGTH, dataFormat);
} /****************************************************************************/
/* */
/* SPI 传输 */
/* */
/****************************************************************************/
void SpiTransfer(void)
{
p_tx = &tx_data[];
p_rx = &rx_data[];
SPIIntEnable(SOC_SPI_1_REGS, (SPI_RECV_INT | SPI_TRANSMIT_INT));
while(flag);
flag = ; SPIDat1Config(SOC_SPI_1_REGS, SPI_DATA_FORMAT0, 0x1);
} /****************************************************************************/
/* */
/* SPI 中断服务函数 */
/* */
/****************************************************************************/
void SPIIsr(void)
{
unsigned int intCode = ;
IntEventClear(SYS_INT_SPI1_INT);
intCode = SPIInterruptVectorGet(SOC_SPI_1_REGS); while (intCode)
{
if(intCode == SPI_TX_BUF_EMPTY)
{
tx_len--;
SPITransmitData1(SOC_SPI_1_REGS, *p_tx);
p_tx++;
if (!tx_len)
{
SPIIntDisable(SOC_SPI_1_REGS, SPI_TRANSMIT_INT);
}
} if(intCode == SPI_RECV_FULL)
{
rx_len--;
*p_rx = (char)SPIDataReceive(SOC_SPI_1_REGS);
p_rx++;
if (!rx_len)
{
flag = ;
SPIIntDisable(SOC_SPI_1_REGS, SPI_RECV_INT);
}
} intCode = SPIInterruptVectorGet(SOC_SPI_1_REGS);
}
}
创龙OMAPL138的SPI FLASH读写的更多相关文章
- 创龙OMAPL138的NMI中断
1. 不可屏蔽中断部分代码,注册中断函数,6748有几个NMI的引脚? void InterruptInit(void) { // 初始化 DSP 中断控制器 IntDSPINTCInit(); // ...
- 创龙OMAPL138开发板测试(1)
1. 里面的DSP内核是否能单独使用?先测试一个LED灯的例程先,仿真器连接上开发板,显示有C6748和PRU还有ARM9.对了,板子的拨码开关要01111,是DEBUG模式才可以. 2. 下载一下. ...
- 创龙DSP6748的DAC例程研究
1. 创龙DSP6748开发板驱动TL5724这个DAC,输出指定的电压值,此程序是使用 IO 口模拟 SPI 实现与 TL5724 模块的数据交互. 2. 首先是初始化PSC函数 void PSCI ...
- nand flash,nor flash,spi flash,片上RAM,片外RAM
Flash有掉电数据保存的特点,RAM掉电则数据丢失,但是RAM的速度更高,擦写次数理论上没有限制,而Flash则不行. Nand Flash相比其余的几种flash优势在于可擦写次数多,擦写速度快, ...
- SPI Flash(W25Q16DV) 基本操作
读取厂家\设备 ID 发送 90H 指令,再发送 00h 的地址,然后接收即可. 代码如下: void SPIFlashReadID(int *pMID, int *pDID) { SPIFlash_ ...
- Jlink使用技巧之烧写SPI Flash存储芯片
前言 大多数玩单片机的人都知道Jlink可以烧写Hex文件,作为ARM仿真调试器,但是知道能烧写SPI Flash的人应该不多,本篇文章将介绍如何使用JLink来烧写或者读取SPI Flash存储器, ...
- RTT下spi flash+elm fat文件系统移植小记
背景: MCU:STM32F207 SPI flash: Winbond W25Q16BV OS: RTT V1.1.1 bsp: STM32F20x 1 将spi_core.c,spi_dev.c及 ...
- Arduino SPI + SPI Flash芯片W25Q80BV
W25Q80BV是台湾华邦电子(Winbond)生产的8M-bit串行flash芯片.主要特性有: 工作电压:2.5 ~ 3.6 V 功耗:读写(active)时4mA,低功耗(power-down) ...
- 【转】SPI FLASH与NOR FLASH的区别 详解SPI FLASH与NOR FLASH的不一样
转自:http://m.elecfans.com/article/778203.html 本文主要是关于SPI FLASH与NOR FLASH的相关介绍,并着重对SPI FLASH与NOR FLASH ...
随机推荐
- 优酷视频上传api及demo代码
1,优酷正常上传流程: 1). create:连接开放平台上传接口服务器,服务器端会返回upload_token以及upload_server_uri.2). create_file:连接上传服务器( ...
- 【bzoj3456】 城市规划
题目 一句话题意,无向连通图计数 技不如人,甘拜下风 设\(f_i\)表示\(i\)个节点构成的无向连通图数量 之后...之后就不会了 于是抄题解 考虑容斥 \[f_i=t_i-\sum_{j=1}^ ...
- ZooKeeper学习之路 (七)ZooKeeper设计特点及典型应用场景
ZooKeeper 特点/设计目的 ZooKeeper 作为一个集群提供数据一致的协调服务,自然,最好的方式就是在整个集群中的 各服务节点进行数据的复制和同步. 数据复制的好处 1.容错:一个节点出错 ...
- [SQL注入] 逗号拦截绕过
在SQL注入时,在确定了注入点后,一般都需要使用联合查询猜表的列数,也就是常见的order by n,n从大到小,直到返回正常,就确定了当前查询的列的个数. 然后再使用 UNION SELECT 1, ...
- 枚举enum和enumerate
#coding=utf-8 from enum import Enum #定义自己的枚举时需要使用class,继承Enum类 class Color(Enum): red=1 green=2 blue ...
- [转]未能加载文件或程序集 CrystalDecisions.Web Version=10.2.3600解决方法
找到你开发的机器上VS安装目录中的SDK\v2.0\BootStrapper\Packages\CrystalReports\CRRedist2005_x86.msi和SDK\v2.0\BootStr ...
- select和epoll
C/S编程模型,对每一个客户端都要开辟一个新的线程,效率必定低下.普通select模型是开辟两个线程,一个用来监听客户端的连接,另一个用于处理客户端请求. fd_set set; FD_ZERO(&a ...
- Vue04——vue自定义事件、Router、Vue-cli、发布上线
一.Vue的自定义事件 点击任何一个按钮,按钮本身计数累加,但是每点击三个按钮中的一个,totalCounter 都要累加. <body> <div id="app&quo ...
- C语言入门编程思维引导
编程思维引导: C语言中 include<stdio.h> 称之为导包,导入写好的函数库,多个则依次写 #define N 3 意思是将N这个字母定义为数字3 当使用的时候就直接用 i ...
- cocoscreator 2.04 配置 visual code 断点调试
1,cocoscreator ,chrome浏览器,visual code 这三个软件的安装 2,官网配置visual code 环境 https://docs.cocos.com/creator/m ...