|  | 
 
| 我想实现在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本帖子中包含更多资源您需要 登录 才可以下载或查看,没有帐号?立即注册 
  |