逻辑分析仪- SPI 时序

一.STM32F103系统框架图

 SPI控制寄存器 1(SPI_CR1)

SPI1是fPCLK2,SPI2是fPCLK1
系统默认配置:fPCLK2=72MHz,fPCLK1=36MHz

SPI1最大能达到72M,SPI2最大能达到36M


二.硬件SPI结构体

typedef struct
{
    uint16_t SPI_Direction;                /*设置 SPI 的单双向模式 */
    uint16_t SPI_Mode;                     /*设置 SPI 的主/从机端模式 */
    uint16_t SPI_DataSize;                 /*设置 SPI 的数据帧长度,可选 8/16 位 */
    uint16_t SPI_CPOL;                     /*设置时钟极性 CPOL,可选高/低电平*/
    uint16_t SPI_CPHA;                     /*设置时钟相位,可选奇/偶数边沿采样 */
    uint16_t SPI_NSS;                      /*设置 NSS 引脚由 SPI 硬件控制还是软件控制*/
    uint16_t SPI_BaudRatePrescaler;        /*设置时钟分频因子,fpclk/分频数=fSCK */
    uint16_t SPI_FirstBit;                 /*设置 MSB/LSB 先行 */
    uint16_t SPI_CRCPolynomial;            /*设置 CRC 校验的表达式 */
} SPI_InitTypeDef;

标准库中SPI_BaudRatePrescaler配置项可选如下:


#define SPI_BaudRatePrescaler_2         ((uint16_t)0x0000)
#define SPI_BaudRatePrescaler_4         ((uint16_t)0x0008)
#define SPI_BaudRatePrescaler_8         ((uint16_t)0x0010)
#define SPI_BaudRatePrescaler_16        ((uint16_t)0x0018)
#define SPI_BaudRatePrescaler_32        ((uint16_t)0x0020)
#define SPI_BaudRatePrescaler_64        ((uint16_t)0x0028)
#define SPI_BaudRatePrescaler_128       ((uint16_t)0x0030)
#define SPI_BaudRatePrescaler_256       ((uint16_t)0x0038)

三.逻辑分析波形

 

 SPI的SCLK时钟波形应该为8个位

四.SPI-ADS1220 出错处

外部时钟频率 f (CLK) 标准值为 4.096MHZ。在硬件SPI中我分频值给太大,导致时序错误。
举例,当SPI_BaudRatePrescaler项配置为SPI_BaudRatePrescaler_64,SPI1是1.125MHz,SPI2是0.5625MHz。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值