网站的上传与发布网站没有备案可以做seo优化吗
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
