单片机解密AT91+MCP2515驱动C语言程序
单片机解密单片机源程序如下:
- 单片机解密#include "AT91RM9200.h"
- 单片机解密#include "lib_AT91RM9200.h"
- 单片机解密#include "AT91_SPI.h"
- 单片机解密#include "MCP2515.h"
- /*****************************************************************************
- 函数功能:MCP2515初始化
- 入口参数:无
- 返 回:无
- 备 注:无
- ******************************************************************************/
- void MCP2515_Init()
- {
- //复位MCP2515
- MCP2515_SPI_CMD( MCP2515_CMD_RESET, ARG_UNUSED, ARG_UNUSED, ARG_UNUSED );
-
- //进入配置模式
- MCP2515_SPI_CMD( MCP2515_CMD_BITMOD, TO_UINT(&(MCP2515_MAP->CANCTRL)), 0xe0, 0x80 );
-
- //配置相关引脚
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->BFPCTRL)), BFPCTRL_INIT_VAL, ARG_UNUSED);
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->TXRTSCTRL)), TXRTSCTRL_INIT_VAL, ARG_UNUSED);
-
- //设置波特率(125k)
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->CNF1)), CNF1_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->CNF2)), CNF2_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->CNF3)), CNF3_INIT_VAL, ARG_UNUSED );
-
- //配置中断
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->CANINTE)), CANINTE_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->CANINTF)), CANINTF_INIT_VAL, ARG_UNUSED );
-
- //复位MCP2515的错误标志寄存器
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->EFLG)), EFLG_INIT_VAL, ARG_UNUSED);
-
- //配置TXBnCTRL(发送缓冲器控制寄存器)
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->TXB0CTRL)), TXBnCTRL_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->TXB1CTRL)), TXBnCTRL_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->TXB2CTRL)), TXBnCTRL_INIT_VAL, ARG_UNUSED );
-
- //配置接收缓冲器控制寄存器
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->RXB0CTRL)), RXB0CTRL_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->RXB1CTRL)), RXB1CTRL_INIT_VAL, ARG_UNUSED );
-
- //配置MCP2515的验收滤波寄存器
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->RXF0SIDL)), RXF0SIDL_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->RXF0SIDH)), RXF0SIDH_INIT_VAL, ARG_UNUSED );
-
- //配置MCP2515的验收屏蔽寄存器
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->RXM0SIDL)), RXM0SIDL_INIT_VAL, ARG_UNUSED );
- MCP2515_SPI_CMD( MCP2515_CMD_WRITE, TO_UINT(&(MCP2515_MAP->RXM0SIDH)), RXM0SIDH_INIT_VAL, ARG_UNUSED );
-
- //进入正常工作模式
- MCP2515_SPI_CMD( MCP2515_CMD_BITMOD, TO_UINT(&(MCP2515_MAP->CANCTRL)), 0xe7, 0x04 );
- }

芯片解密