TLC6748EasyEVM双SPI口对传数据测试 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4559|回复: 3

[未解决] TLC6748EasyEVM双SPI口对传数据测试

[复制链接]

1

主题

3

帖子

35

积分

新手上路

Rank: 1

积分
35
发表于 2018-6-15 09:28:16 | 显示全部楼层 |阅读模式
    我想实现在TLC6748EasyEVM利用双SPI口进行数据对传,打算使用两路SPI总线中断来实现数据的收发。我把SPI0与SPI1的时钟线,MISO,MOSI,片选线对连起来,使用SPI1作为MASTER发送数据,SPI0作为SLAVE接收数据,代码经过编译可以运行,但是不见中断产生,不知道问题出在哪。    请各路大神帮忙看下我改的测试代码有没有什么问题,谢谢!!!

   (附件里有我的源码)

/****************************************************************************/
/*                                                                          */
/*              双SPI口 对传测试                                          */
/*                                                                          */
/*              2018年06月15日                                              */
/*                                                                          */
/****************************************************************************/

#include "TL6748.h"                 // 创龙 DSP6748 开发板相关声明

#include "soc_C6748.h"
#include "hw_psc_C6748.h"

#include "uart.h"
#include "spi.h"
#include "psc.h"

#include "uartStdio.h"

#include "interrupt.h"

#include <string.h>

#include "spi0.h"//------------

/****************************************************************************/
/*                                                                          */
/*              宏定义                                                      */
/*                                                                          */
/****************************************************************************/
// SPI 管脚配置
#define SIMO_SOMI_CLK_CS        0x00000E01
#define CHAR_LENGTH             0x8

// FLASH 地址
#define SPI_FLASH_ADDR_MSB1     0x0A
#define SPI_FLASH_ADDR_MSB0     0x00
#define SPI_FLASH_ADDR_LSB      0x00

// 扇区擦除命令
#define SPI_FLASH_SECTOR_ERASE  0xD8

// 页写入命令
#define SPI_FLASH_PAGE_WRITE    0x02

// 读状态寄存器命令
#define SPI_FLASH_STATUS_RX     0x05

// 写使能命令
#define SPI_FLASH_WRITE_EN      0x06

// 读命令
#define SPI_FLASH_READ          0x03

// 写操作执行中
#define WRITE_IN_PROGRESS       0x01

/****************************************************************************/
/*                                                                          */
/*              全局变量                                                    */
/*                                                                          */
/****************************************************************************/
volatile unsigned int flag = 1;
volatile unsigned int flag0 = 1;

unsigned int tx_len;
unsigned int rx_len;
unsigned char vrf_data[260];
unsigned char tx_data[260];
unsigned char rx_data[260];
unsigned char *p_tx;
unsigned char *p_rx;

/****************************************************************************/
/*                                                                          */
/*              函数声明                                                    */
/*                                                                          */
/****************************************************************************/
void PSCInit(void);
void GPIOBankPinMuxSet(void);

void SPI1DataFormatConfig(unsigned int dataFormat);

//void ReadFromFlash(void);
//void IsFlashBusy(void);
void WritetoFlash(void);
void WriteEnable(void);
void Spi1Transfer(void);
//void SectorErase(void);
int  VerifyData(void);
void StatusGet(void);

void SPIInit(void);
void InterruptInit(void);
void SPI0InterruptInit(void);
void SPI0Isr(void);
void SPI1InterruptInit(void);
void SPI1Isr(void);

/****************************************************************************/
/*                                                                          */
/*              主函数                                                      */
/*                                                                          */
/****************************************************************************/
int main(void)
{
        PSCInit();

        GPIOBankPinMuxSet();// GPIO 管脚复用配置

    // 初始化串口终端 使用串口2
    UARTStdioInit();

    UARTPuts("Tronlong SPI Flash Application......\r\n", -1);

    // 管脚复用配置
    GPIOBankPinMuxSet();

    // DSP 中断初始化
    InterruptInit();

    // SPI1 中断初始化
    SPI1InterruptInit();
    // SPI1 初始化
    SPIInit();//时钟速度:20000000 片选:1

    SPI0InterruptInit();
    SPI0Setup(1, 8);// SPI0设置

//-----------------------------------------
    unsigned int index;

    tx_data[0] =  55;
    tx_data[1] =  0xAA;
    tx_data[2] =  55;
    tx_data[3] =  0xAA;

    // 准备要写入的数据
    for (index = 4; index < 260; index++)
    {
        tx_data[index] =  index;
    }

    for(index = 4; index < 260; index++)
    {
         vrf_data[index] = index;
    }

    tx_len = rx_len = index;

    SPIIntEnable(SOC_SPI_0_REGS, (SPI_RECV_INT | SPI_TRANSMIT_INT));//使能中断
    SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
//    Spi1Transfer();

//    SPIDat1Config(SOC_SPI_0_REGS, SPI_DATA_FORMAT0, 0x1);
    printf("tx_len = %d \n",tx_len);
    while(tx_len)//发送buff空中断
    {
        tx_len--;
        SPITransmitData1(SOC_SPI_1_REGS, *p_tx);//发送数据
        p_tx++;
        if (!tx_len)
        {
            break;
        }
    }
    SPIDat1Config(SOC_SPI_1_REGS, SPI_DATA_FORMAT0, 0x1);

    for(;;)
    {

    }
}

/****************************************************************************/
/*                                                                          */
/*              PSC 初始化                                                  */
/*                                                                          */
/****************************************************************************/
void PSCInit(void)
{
        // 对相应外设模块的使能也可以在 BootLoader 中完成
    // 使能 SPI 模块
    PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_SPI1, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
}

/****************************************************************************/
/*                                                                          */
/*              GPIO 管脚复用配置                                           */
/*                                                                          */
/****************************************************************************/
void GPIOBankPinMuxSet(void)
{
        SPIPinMuxSetup(1);//猜此处输入为使用的SPI端口号
        SPI1CSPinMuxSetup(0);//SPI片选信号
}

/****************************************************************************/
/*                                                                          */
/*              读状态寄存器                                                */
/*                                                                          */
/****************************************************************************/
void StatusGet(void)//获取flash状态
{
    tx_data[0] = SPI_FLASH_STATUS_RX;
    tx_len = rx_len = 2;
    SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
    Spi1Transfer();
}

/****************************************************************************/
/*                                                                          */
/*              写使能                                                      */
/*                                                                          */
/****************************************************************************/
void WriteEnable(void)
{
    tx_data[0] = SPI_FLASH_WRITE_EN;
    tx_len = rx_len = 1;
    SPIDat1Config(SOC_SPI_1_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), 0x1);
    Spi1Transfer();
}







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

12

主题

169

帖子

731

积分

QQ游客

积分
731
发表于 2018-6-19 15:20:43 | 显示全部楼层
您好,我们暂时没有提供,两路SPI,其中一路发送,另一路接收的例程。不过SPI读写的相关例程,我们是有提供给您的,请您参考,我们提供的SPI_DAC_AD5724v2例程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-28 22:46 , Processed in 0.039646 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表