mcp2515的问题
在读取mcp2515的寄存器和接受数据缓冲区的时候,为什么在写入地址之后还要往里面写入一个0xff呢?
uint8_t mcp2515_read_register(uint8_t adress)
{
uint8_t data;
/* CS low */
PORTB &= ~(1<<SPI_CS);
spi_putc(SPI_READ);
spi_putc(adress);
data = spi_putc(0xff);??
/* CS high */
PORTB |= (1<<SPI_CS);
return data;
}
uint8_t mcp2515_read_rx_buffer(uint8_t adress)
{
uint8_t data;
/* 躡erpr黤en ob die Adresse richtig ist */
if (adress & 0xF9)
return 0;
/* CS low */
PORTB &= ~(1<<SPI_CS);
spi_putc(SPI_READ_RX | adress);
data = spi_putc(0xff);??
/* CS high */
PORTB |= (1<<SPI_CS);
return data;
uint8_t mcp2515_read_register(uint8_t adress)
{
uint8_t data;
/* CS low */
PORTB &= ~(1<<SPI_CS);
spi_putc(SPI_READ);
spi_putc(adress);
data = spi_putc(0xff);??
/* CS high */
PORTB |= (1<<SPI_CS);
return data;
}
uint8_t mcp2515_read_rx_buffer(uint8_t adress)
{
uint8_t data;
/* 躡erpr黤en ob die Adresse richtig ist */
if (adress & 0xF9)
return 0;
/* CS low */
PORTB &= ~(1<<SPI_CS);
spi_putc(SPI_READ_RX | adress);
data = spi_putc(0xff);??
/* CS high */
PORTB |= (1<<SPI_CS);
return data;
...全文
相关推荐
STM32用MCP2515通讯
STM32用MCP2515进行双机通讯,MCP2515波特率为125Kbit/s,两块STM32的开发板用MCP2515通讯,经测试没问题。
STM32外挂MCP2515实现CAN通信的三大核心问题
CAN总线是一种广泛应用的工业现场总线协议,其可靠通信依赖于物理层、数据链路层与控制器协同工作。理解CAN波特率计算、位时间参数(BS1/BS2/SJW)配置原理,是解决通信失败的基础;而MCP2515作为典型SPI接口CAN控制器,其寄存器初始化时序、模式切换逻辑及中断映射机制,直接决定STM32能否稳定驱动CAN总线。该方案在电机控制、汽车诊断和传感器网络等场景中具备资源解耦与协议下沉的技术优势,尤其适合需兼顾成本、可维护性与未来升级(如CAN FD兼容)的嵌入式系统设计。
MCP2515的FPGA程序
CAN协议芯片MCP2515的FPGA控制程序,VERILOG语言,分享给需要的人
mcp2510与mcp2515区别.pdf
mcp2510与mcp2515区别.pdf
mcp2510与mcp2515区别
mcp2510与mcp2515区别.pdf


单片机/工控
