S32K312配置SPI(基于MCAL)

本文采用同步传输方式,发送(接收)32bit数据
1.添加Mcu、Port、Spi模块

2.将所有模块都设为预编译模式

3.port模块配置:添加引脚CS、CLK、MOSI、MISO以及片选芯片的使能脚(使能脚可能有多个,具体参照芯片手册),这里需要注意MISO的引脚配置,选择SIN_IN,不能选择SIN_OUT,否则返回的数据能测到波形,但变量不会更新

4.SPI模块配置

1)SpiPhyUint配置,主要选择哪一路SPI,主从模式、同步异步传输配置

2)SpiDriver配置:SpiMaxChannel是配置的通道数,SpiMaxJob、SpiMaxSequence与SpiMaxChannel保持一致即可

SpiChannelType:EB是采用外部Buffer,IB是采用内部Buffer,这里与SpiGenernal--SpiChannelBuffersAllowed的配置有关联

SpiDataWidth:数据长度

SpiEbMaxLength:Eb的最大长度,我这里发送32位数据,以uint8 Tx[4]的数组形式发送,因此是4;如果还是发送32位数据,以uint32 Tx的形式发送,这里就是32

3)片选相关配置(核心)

SpiCsPolarity:片选极性,看SPI时序图,低电平的时候在传输数据,因此选择LOW

SpiDataShiftEdge:选择上升沿转换数据还是下降沿,看SPI时序图,是上升沿开始转换数据

SpiShiftClockIdleLevel:选择空闲电平是高还是低,这里时序图非常容易误解是高电平,这里是看CS拉低时的电平,这里是低电平

4)SpiJob、SpiSequence:这里注意配多个SPI时SpiChannel、SpiJob、SpiSequence要一一对应

5.MCU模块配置

需要手动打开添加的模块LPSPI3

6.代码

1)配置完成后生成代码,添加相关头文件,建一个Tx Buffer和一个Rx Buffer

2)在main函数里初始化MCU、Port、Spi,初始化完后即可发送/接收

3)这里主要讲一下SPI传输的两个函数

Spi_SetupEB(),有四个参数,第一个选择使用的哪个Channel,第二个参数是发送地址指针,第三个参数是接收地址指针,第四个参数是外部缓冲区的数据长度

Spi_SyncTransmit() 发送、接收都是调用这个函数

Channel与Sequence两个参数,代码生成的位置如下图

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值