• SPI总线知识总结


    1 SPI的时钟极性CPOL和时钟相位CPHA的设置
    1.1 SPI数据传输位数
    SPI传输数据过程中总是先发送或接收高字节数据,每个时钟周期接收器或发送器左移一位数据。对于小于16位的数据,在发送前必须左对齐,如果接收的数据小于16位,则采用软件将无效的数据位屏蔽。

    1.2 Linux Example
    @ drivers/hwmon/max1111.c
    static int max1111_probe(struct spi_device *spi)
    {
        enum chips chip = spi_get_device_id(spi)->driver_data;
        struct max1111_data *data;
        int err;

        spi->bits_per_word = 8;
        spi->mode = SPI_MODE_0;  //HERE
        err = spi_setup(spi);
        if (err < 0)
            return err;

        [...]
    }

    1.3 MCU
    @ mems_init.c
    spi_config.polarity = HAL_SPI_MASTER_CLOCK_POLARITY0;
    spi_config.phase = HAL_SPI_MASTER_CLOCK_PHASE0;

    Cywee CMH1000 IC is designed by Realtek, software is designed by Cywee. CMH1000 sensorhub integrates 224KB DRAM and 336KB IRAM, SRAM voltage is 1V.
    CMH1000 sensorhub侧DataRAM开始地址保留1024字节,给SPI传输用,分成TX和RX,各512 bytes;sensorhub侧封包最大是269 bytes(包括header和payload)。

    2 SD卡SPI模式
    2.1 SD卡pin映射到SPI模式
    针脚       SD卡模式       SPI模式
    1             CD/DAT3         CS
    2             CMD                MOSI
    3             VSS                 VSS
    4             VCC                 VCC
    5             CLK                  CLK
    6             VSS                  VSS
    7             DAT0                MISO
    8             DAT1                NC
    9             DAT2                NC

    2.2 SD命令中的CMD和ACMD的区别
    ACMD:Application specific ComManD, which is an application specific command rather than a standard command。
    一般的CMD只有6个bit,后来发现需要的CMD类型多了,所以就扩展出了CMD55+ACMDxx的扩展模式。ACMD命令发送前需要先发送CMD55,比如ACMD41,先发送CMD55,再发送ACMD41。

    2.3 SD/MMC 初始化流程
    1)配置时钟,慢速一般为400K,设置工作模式
    2)发送CMD0,进入空闲态,该指令没有反馈
    3)发送CMD8,如果有反应,CRC值与发送的值相同,说明该卡兼容SD2.0协议
    4)发送CMD55+ACMD41,判断SD卡的上电是否正确,短反馈成功说明该卡为SD卡(短反馈第31位置1为HC卡),否则发送CMD0,有反应说明是MMC卡
    5)发送CMD2,验证SD卡是否接入,长反馈CID(Card IDentification Register)
    6)发送CMD3,读取SD卡的RCA(地址,Relative Card Address),短反馈
    7)发送CMD9,读取CSD(Card Specific Data Register)寄存器获取卡的相关信息
    8)发送CMD7,使能SD卡
    9)配置高速时钟,准备数据传输,一般20M~25M
    10)发送CMD55+ACMD51读取SCR(SD Card Configuration Register)寄存器,SD卡可以通过该值获得位宽,如果是MMC卡则需要使用主线测试来确定卡的位宽
    11)SD卡发送CMD55+ACMD6配置为4bit数据传输模式(根据SCR读出来的值确定),MMC卡发送CMD6来设置位宽
    12)发送CMD7,使能SD卡,使其进入传输状态,接着发送CMD16设置块大小(根据前面读取的CSD信息确定)
    13)把命令参数设置为0,再次发送CMD7,取消选中所有卡

    Figure 2-1 SD卡的初始化和识别流程

    2.4 Q and A
    Q:SD卡的工作频率是根据什么来决定的?
    A:目前所知不是通过读取寄存器(可读写寄存器CSD、SCR等)获取的,而是根据SD卡的类型,类型对应着工作频率。
    host端配置支持的频率,然后SD卡本身会有支持的频率,两边取都支持的最高频率,所以需要得到SD卡的类型,类型就对应着频率。
    in mmc.c
    mmc_select_card_type() - 根据卡的类型(仅需要知道卡的类型后)选择工作频率,选择的工作频率不能大于最大工作频率(最大工作频率由CSD寄存器TRAN_SPEED[103:96]字段指定)。

    3 SPI接口以太网芯片
    WIZnet - 80 MHz SPI slave接口
    ENC28J60 - Microchip Ethernet Controller,10 MHz SPI slave
    CH395 - SPI slave 30 MHz

    QCOM平台使用gpll0去做分频,SPI的速度可以达到100 MHz

    BCM89230交换芯片- SPI slave最高速度62.5 MHz,Data Format(Big Endian序):1-byte command, 4-byte address, 1 ~ 8 bytes data

    4 APL A39X0 Gen9
    4.1 spi-pxa2xx
    4.2 ACPI - iasl_win
    cat /sys/firmware/acpi/tables/DSDT > DSDT.aml
    sudo apt-get install iasl
    iasl -d DSDT.aml
    cat DSDT.dsl

    WINDOWS BINARY TOOLS
    https://www.acpica.org/downloads/binary-tools

    5 Abbreviations
    ACMD: Application specific ComManD
    ARC: Argonant RISC Core
    AT91SAM9260: SAM means Smart ARM-based
    ATMEL SAMBA: ATMEL Smart ARM-based Boot Assistant
    DTR: Data Transfer Rate
    DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
    ISP1161: Philips' Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
    MISO: mi s əu
    MOSI: m əu si
    QUP:高通平台的SPI总线和I2C共用core和引脚,称为QUP(QCOM Universal Peripheral);而UART和QUP又共用引脚,并且称为BLSP
    SL811HS:Cypress/ScanLogic 811 Host/Slave,性能上与ISP1161(Integrated host Solution Pairs 1161)相当
    TDI:TransDimension Inc.,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI(ehci)
    TLV: TI Low Value,高性价比
    TPS: TI Performance Solution

  • 相关阅读:
    内置模板市场,DataEase开源数据可视化分析平台v1.13.0发布
    【Node.js】大前端技能最通俗易懂的讲解 快速入门必看
    kotlin-筑基(1)
    适用于90%网剧、网大的最新备案流程解析
    2-11.基金管理人的合规管理
    显示器有白点闪烁、间歇黑屏解决办法
    【AVL树】
    veImageX 演进之路:Web 图片加载提速50%
    .NET周报 【4月第1期 2023-04-02】
    Spring MVC
  • 原文地址:https://blog.csdn.net/zoosenpin/article/details/77240667