samsung S3C2416支持HS_SPI(高速串行外设接口),是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。
将2416作为SPI主站与MCP2515通讯,s3c2416采用SPI中断方式处理发送和接收。
考虑到MCP2515spi协议,采用一问一答方式,中断处理中需严格遵循一条完整指令中的发送和接收,即发送完应马上处理需要的接收。
spi中断处理流程:
1.初始化SPI和中断
void SpiRegInit(PCAN_INFO pCan_info)
{
rCH_CFG |= (1<<5);//软件复位
rCH_CFG &= ~(1<<5);
rCH_CFG = (0<<4) | (0<<3) | (0<<2) | (0<<1) | (0<<0);
rCLK_CFG = PCLK/((2*SPICLK)+1);//时钟配置
rCLK_CFG |= (0<<9) | (1<<8);
rMODE_CFG = (rMODE_CFG & ~0x1fffffff) | TRAIL_CNT(0x3FF) | MODE_BUS_SZ_BYTE | TX_TRIG_LVL(0x1);//配置模式寄存器
//RX_TRIG_LVL(1);// | TX_TRIG_LVL(0x4);
//rSPI_INT_EN = 0;