SPI 学习总结

本文介绍了SPI(Serial Peripheral Interface)串行外围设备接口,包括SPI的基本概念、引脚功能、数据传输方式以及SPI的驱动架构。SPI是一种高速、全双工、同步的通信总线,常用于EEPROM、FLASH、AD转换器等设备之间。SPI驱动架构分为SPI核心、控制器驱动和设备驱动三层,详细解析了各层次的功能和数据结构。
摘要由CSDN通过智能技术生成


1. SPI 简介
SPI (Serial Peripheral interface)串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的。
SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。
SPI的四根线为SDI(数据输入),SDO(数据输出),SCLK(时钟),CS(片选)。
      可以参考 drivers/spi 目录。      
spi_device的板信息用spi_board_info结构体来描述:
struct spi_board_info {
    char    modalias[SPI_NAME_SIZE];
    const void    *platform_data;
    void    *controller_data;
    int    irq;
    u32    max_speed_hz;
    u16    bus_num;
    u16    chip_select;
    u8    mode;
};
记录了SPI外设使用的主机控制器序号、片选信号、数据比特率、SPI传输方式等
static struct mcp251x_platform_data mcp251x_info = {
        .oscillator_frequency = 20*1000*1000, /*外部晶振,结合手册及具体硬件设置*/
        .board_specific_setup = NULL,  
        .power_enable = NULL,  
        .transceiver_enable = NULL,
};
CS用gpio替换
static struct pxa2xx_spi_chip qrk_ffrd_spi_cs_mcp251x = {
    .gpio_cs = 9,/*GPIO号*/
};
    {
        .modalias = "mcp2515",
        .platform_data = &mcp251x_info,
        .mode = SPI_MODE_0,
        .irq = 58,
        .max_speed_hz = 2*1000*1000,       /* max sample rate at 3V */
        .bus_num = 0,
        .chip_select = 1,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值