zoukankan      html  css  js  c++  java
  • SPI 驱动框架

    SPI 驱动框架
    
    1. 枚举过程
    drivers/spi/spi.c:
        spi_register_board_info
            /* 对于每一个spi_master,调用spi_match_master_to_boardinfo */
            list_for_each_entry(master, &spi_master_list, list)
                /* 
                 * board_info 里含有 bus_num , 如果某个 spi_master 的 bus_num 跟它一样
                 * 则创建一个新的 spi_device
                 */
                spi_match_master_to_boardinfo
                    if (master->bus_num == bi->busnum)
                        spi_new_device
                            spi_alloc_device
    
                            /* 记录 bi 信息, 比如片选,MODE,MAX HZ */    
                            
                            spi_add_device /* 根据名字找到 spi_driver , 调用它的 probe 函数 */
                                spi_setup(spi);
                                device_add  /* 会绑定到一个 spi_driver */
    
    2. 数据收发过程
        spi_write
            spi_message_init(&m);
            初始化一个spi_message  /* 一个不可打断的SPI传输过程: cs=0,传数据,cs=1 */
                                   /* 一个spi_message由多个spi_transfer组成 */
            spi_message_add_tail(&t, &m);  /* spi_transfe 是 SPI 上传输的单方向 1 个或多个字节 */
            spi_sync(spi, &m);  /* 启动传输并等待完成 */
        
    3. spi_driver如何调用spi_controller
        spi_sync
            __spi_sync(spi, message, 0);
                spi_async_locked
                    __spi_async
                        master->transfer(spi, message);
                wait_for_completion
    

  • 相关阅读:
    [NOIP2020]T2字符串匹配
    【CSGRound2】逐梦者的初心(洛谷11月月赛 II & CSG Round 2 T3)
    【CF1225E Rock Is Push】推岩石
    [HAOI2016]食物链
    求先序排列
    图书管理员
    合并果子
    联合权值
    和为0的4个值
    玩具谜题
  • 原文地址:https://www.cnblogs.com/GyForever1004/p/8525962.html
Copyright © 2011-2022 走看看