ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

【嵌入式外设精学】Day14|SPI:CPOL、CPHA 与收发一字节

【嵌入式外设精学】Day14|SPI:CPOL、CPHA 与收发一字节 【嵌入式外设精学】Day14SPI 详解CPOL、CPHA 与单字节收发今天解决接屏/Flash 总要试 mode0、mode3一次记清。目录问题 2. 原理 3. 代码 4. 误区 5. 自测 6. 答案1. 问题为什么手册要写 Mode 0/3SPI 为什么比 I2C 快2. 原理2.1 四根线线作用SCK主机产生的时钟MOSI主机出、从机入MISO主机入、从机出CS片选一般低有效全双工无 ACK靠 CS 选设备。2.2 两个旋钮名称含义CPOL空闲时 SCK 是 0 还是 1CPHA在“第几个边沿”采数据2.3 四种模式记采样沿模式空闲采样时机0低上升沿采样1低下降沿采样2高下降沿采样3高上升沿采样从机手册写哪一种主机就配哪一种配错会“位错位/读出来像随机”。3. 代码示例#includestm32f4xx.huint8_tspi_xfer_byte(SPI_TypeDef*spi,uint8_tv){while(SPI_I2S_GetFlagStatus(spi,SPI_I2S_FLAG_TXE)RESET){}SPI_I2S_SendData(spi,v);while(SPI_I2S_GetFlagStatus(spi,SPI_I2S_FLAG_RXNE)RESET){}return(uint8_t)SPI_I2S_ReceiveData(spi);}uint8_tspi_read_reg(uint8_treg){uint8_tx;GPIO_ResetBits(GPIOB,GPIO_Pin_0);/* CS 拉低 */(void)spi_xfer_byte(SPI1,reg);xspi_xfer_byte(SPI1,0xFF);GPIO_SetBits(GPIOB,GPIO_Pin_0);/* CS 拉高 */returnx;}初始化时对应设 CPOL/CPHA标准库示意SPI_InitTypeDef s;s.SPI_DirectionSPI_Direction_2Lines_FullDuplex;s.SPI_ModeSPI_Mode_Master;s.SPI_DataSizeSPI_DataSize_8b;s.SPI_CPOLSPI_CPOL_High;/* Mode 3 */s.SPI_CPHASPI_CPHA_2Edge;s.SPI_NSSSPI_NSS_Soft;s.SPI_BaudRatePrescalerSPI_BaudRatePrescaler_8;s.SPI_FirstBitSPI_FirstBit_MSB;4. 常见误区误区正解模式随便配必须与从机一致MOSI/MISO 随便接主出对从入主入对从出多从机都让 MISO 输出只能选中的设备驱动SPI 必然比 I2C 稳线更长/更快时也要看驱动与负载5. 自测Mode 0 在哪个沿采样SPI 四根线分别是什么6. 答案上升沿空闲低。SCK、MOSI、MISO、CS。作者shuifanyu标签SPICPOLCPHA
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表