SPI写寄存器操作:
staticvoid mcp251x_write_reg(struct spi_device *spi, uint8_t reg, uint8_t val)
{
struct mcp251x *chip = dev_get_drvdata(&spi->dev);
int ret;
down(&chip->lock);
chip->spi_transfer_buf[0] = INSTRUCTION_WRITE;
chip->spi_transfer_buf[1] = reg;
chip->spi_transfer_buf[2] = val;
ret = spi_write(spi, chip->spi_transfer_buf, 3);
if (ret
dev_dbg(&spi->dev, "%s: failed: ret = %d\n", __FUNCTION__, ret);
up(&chip->lock);
}
staticvoid mcp251x_write_bits(struct spi_device *spi, uint8_t reg, uint8_t mask, uint8_t val)
{
struct mcp251x *chip = dev_get_drvdata(&spi->dev);
int ret;
down(&chip->lock);
chip->spi_transfer_buf[0] = INSTRUCTION_BIT_MODIFY;
chip->spi

本文详细介绍了Linux系统下针对MCP251x芯片进行SPI读写寄存器的操作,包括静态函数`mcp251x_write_reg`用于写寄存器,`mcp251x_write_bits`用于修改寄存器位,以及`mcp251x_read_reg`和`mcp251x_read_state`用于读取寄存器的实现。这些函数利用SPI传输协议与设备进行交互,涉及`spi_write`和`spi_write_then_read`函数的应用。
最低0.47元/天 解锁文章
6170

被折叠的 条评论
为什么被折叠?



