-
DSPIC30F 双机SPI通信
大佬们,我用microchip的DSPIC30F2020和DSPIC30F6011A进行SPI通信,要实现的功能是6011A发送给2020,然后2020再回传给6011A,但是实际测试时一直不好使,附上部分代码2020端:/**************spi初始化***************/clrSPI1BUF;SPI模块500/738(SPIxBUF缓冲器)(SPIxSR移入移除数据)bclrIFS0,#SPI1IF;将IFS0中的指定位清0,SPI1中断标志状态位,中断标志状态位0=未发生中断请求bsetIEC0,#SPI1IE;置一,中断允许控制寄存器,1=允许中断请求,使能SPI中断mov#0x0c5b,w0movw0,SPI1CON1;(495)时钟极性:空闲状态时钟信号为高电平.有效状态为低电平,从动模式,辅预分频比2:1,主预分频比1:1bclrSPI1STAT,#SPISIDL;空闲模式下继续工作bclrSPI1STAT,#SPIROV;接收溢出标志位0=没有发生溢出bsetSPI1STAT,#SPIEN;SPI使能位1=使能模块,并将SCKx、SDOx、SDIx和SSx配置为串口引脚/*SPI中断设置优先级标识位置0中断时能置1*/bclr.bIFS0+1,#0;.b字节模式选择,清零,0=未发生中断请求SPI1中断标志状态位bset.bIEC0+1,#0;置1使能,中断允许控制寄存器,外部中断0允许位,=允许中断请求bset.bIPC2,#0;中断优先级控制寄存器2,SPI1中断优先级位110=6级修改为7级bset.bIPC2,#1;bset.bIPC2,#2;2020SPI中断:__SPI1Interrupt:disi#20;禁止中断,持续时间为10个指令周push.s;压入影子寄存bclrIFS0,#SPI1IF;将IFS0中的指定位清零,为下次SPI中断准备,SPI1中断标志状态位,0=未发生中断请求bclrSPI1STAT,#SPIROV;movSPI1BUF,w3;将SPI接收的电流数电压信号据存入W3movw3,Sign;movSign,w1;lsrw1,#8,w2;movw2,PORTB;movw3,PORTE;NOPNOPNOPNOPmov#0x047A,w0movw0,SPI1CON1;(495)时钟极性:空闲状态时钟信号为高电平.有效状态为低电平,从动模式,辅预分频比2:1,主预分频比1:1bclrSPI1STAT,#SPISIDL;空闲模式下继续工作bclrSPI1STAT,#SPIROV;接收溢出标志位0=没有发生溢出bsetSPI1STAT,#SPIEN;SPI使能位1=使能模块,并将SCKx、SDOx、SDIx和SSx
2021-01-27 0