|
本文是依照TI提供的MSP430与DSP通信方法一文,对其加以改进设计而成,MSP430使用MSP430F149,DSP采用TMS320VC5402.
MSP430F149 + TMS320VC5402 参考设计 之 DSP 源码---仅供参考。
#include <std.h> #include <tsk.h> #include <sem.h> #include <prd.h> #include <swi.h> #include "regs54xx.h"
#define DATA_IN ((int*) 0x0061)
unsigned char i = 0,j=0; unsigned int flag = 0 ; unsigned int flag2 = 5; //extern unsigned int flag2; extern unsigned int asm_func(unsigned int i); void HPI_DO(void); void main(void) {
// IMR = 0x020a; asm(" ssbx INTM "); asm(" stm #280h,SP "); asm(" ssbx OVM "); asm(" ssbx SXM "); asm(" stm #0ffffh,IFR "); asm(" stm #020ah,IMR ");
asm(" rsbx INTM ");
flag = asm_func(50); flag2 = flag;
while(1){ if(flag == 1) { flag = 0; HPI_DO(); }; } }
interrupt void timer0(void) /* PRD0 handle function */ {
i = j = 0; }
interrupt void int_1(void) { i = j = 0; }
interrupt void hpi(void) { flag = 1; }
void HPI_DO(void) { unsigned int i=0; DATA_IN[2] = 0;
for(i = 0; i<10000;i++) { DATA_IN[2] = DATA_IN[2]+DATA_IN[0]*DATA_IN[1]; } HPIC = 0x08; }
MSP430F149 + TMS320VC5402 参考设计 之 MSP430 源码---仅供参考。
#include "MSP430x13x.h" // Standard Definition Control Register
#define INIT_HPI 0x01 #define CLR_HINT 0x09 #define SET_DSPINT 0x05
#define HINT BIT7 #define HRDY BIT6 #define HDS1 BIT5 #define HPIENA BIT4 #define CNT1 BIT3 #define CNT0 BIT2 #define HBIL BIT1 #define HRW BIT0
void Init(void); // Initialization of System/Control Registers void Write_HPIC(unsigned char i); void Write_HPIA(unsigned int i); void Write_HPID(unsigned int i); unsigned int Read_HPID(void);
unsigned int data_out[16]={0x0001,0x0002,0x0003,0x0004}; unsigned char message[20]="Registers\r\n";
unsigned int data_r; unsigned char flag = 0x00;
void delay(unsigned int); void main(void) {
Init(); // Initialization
data_out[0]=0; data_out[1]=2;
Write_HPIC(INIT_HPI);
while(1) {
//********* Init data address(0x0060) to HPI ********** Write_HPIA(0x0060);
//********* write data1 to HPI ********** Write_HPID(data_out[0]); Write_HPID(data_out[1]); //************** Write data2 to HPI **********
//************ INTERRPUT HPI ************ Write_HPIC(SET_DSPINT);
//************ ************ do{ flag = P4IN >> 7; flag = flag & 0x01; }while(flag);
//****** CLEAR HPI INTERRUPT ************ Write_HPIC(CLR_HINT);
//*********** SET ADDRESS **************** Write_HPIA(0x0063);
//************ READ DATA FROM HPI ************ data_r = Read_HPID(); data_out[0] ++;
}
}
|