BF533对MCP2515的读,写等底层驱动功能
0赞
发表于 2012/3/3 11:39:33
阅读(13167)
/**************************************************************************** * 名称 : MCP2515_BitModify * 功能 : MCP2515 内部控制寄位修改 * 入口参数 :addrr 要修改的内部寄存器地址 Rmask 修改屏蔽 Rdata 修改数据 * 出口参数 :无 ****************************************************************************/ void MCP2515_BitModify(uint8_t addrr,uint8_t Rmask,uint8_t Rdata) { SPIMenable(); //允许SPI SPIMODE_TX(); //发送模式 SPIsend(MCP2515_BITMOD); //发送位修改模式 SPIsend(addrr); //写修改寄存器地址 SPIsend(Rdata); //写修改数据 SPIsend(Rmask); //写修改屏蔽位 udelay(0x7fff); SPIdisable(); //禁止SPI udelay(0x7fff); } /**************************************************************************** * 名称 : MCP2515_Init * 功能 : MCP2515 工作初始化 * 入口参数 :无 * 出口参数 :无 ****************************************************************************/ void MCP2515_Init(void) { MCP2515_WRITE_REG(CANCTRL,0x86); // 配置模式 1/2 FOSC MCP2515_WRITE_REG(BFPCTRL,0x0f); // 接受引脚控制 ,接收中断 MCP2515_WRITE_REG(TXRTSCTRL,0x00);//发送引脚控制 MCP2515_WRITE_REG(CNF3,0x02); MCP2515_WRITE_REG(CNF2,0x89); MCP2515_WRITE_REG(CNF1,0x0b); MCP2515_WRITE_REG(CANCTRL,0x06);// 配置工作模式 1/2 FOSC 0x46 为回环模式 //MCP2515_WRITE_REG(CANINTE,0x01); //TX0 接收中断 允许 } /**************************************************************************** * 名称 : MCP2515_TX0 * 功能 : MCP2515_TX0 标识符设置和发送数据的载入 * 入口参数 :无 * 出口参数 :无 ****************************************************************************/ void MCP2515_TX0(uint8_t *dat) { uint8_t i,j = 0x36; MCP2515_WRITE_REG(TXB0SIDH,0x00);// 标识符高8位 MCP2515_WRITE_REG(TXB0SIDL,0xa0);// 标识符为 0x01 MCP2515_WRITE_REG(TXB0DLC,0x0a); for(i=0;i<8;i++) { MCP2515_WRITE_REG(j,dat[i]); // 发送的8个数据 j++; } } /**************************************************************************** * 名称 :MCP2515_RX0_Init * 功能 :MCP2515_RX0_Init 关闭屏蔽滤波器 滚存禁止 接收所有报文 * 入口参数 :无 * 出口参数 :无 ****************************************************************************/ void MCP2515_RX0_Init(void) { MCP2515_WRITE_REG(RXB0CTRL,0x60); //关闭屏蔽滤波器 } /**************************************************************************** * 名称 :MCP2515_Send_Enable * 功能 :允许发送缓冲器 1,2,3 发送 * 入口参数 :TXnum 允许发送缓冲器标号 * 出口参数 :无 ****************************************************************************/ void MCP2515_Send_Enable(uint8_t TXnum) { if(TXnum==1) { MCP2515_WRITE_REG(TXB0CTRL,0x08); //缓冲器1 发送允许 } if(TXnum==2) { } if(TXnum==3) { } } /**************************************************************************** * 名称 :MCP2515_Send_Disable * 功能 :禁止发送缓冲器 1,2,3 发送 * 入口参数 :TXnum 禁止发送缓冲器标号 * 出口参数 :无 ****************************************************************************/ void MCP2515_Send_Disable(uint8_t TXnum) { if(TXnum==1) { MCP2515_WRITE_REG(TXB0CTRL,0x00); //缓冲器1 发送禁止 } if(TXnum==2) { } if(TXnum==3) { } }