• 05-SA8155 QNX SPI 全双工通讯


    1. 背景

    SPI具备全双工/半双工功能特性,以及可扩展特性。为了提高通讯效率,首选全双工模式。另外SPI通讯涉及主从模式,在汽车电子领域,一般将SOC端设置为主机(Master),MCU端为从机(Slave),这样的话,SPI CLK必须由主机发出。那么问题来了O(∩_∩)O哈哈~

    • 主机率先发出通讯指令,CLK正常,读写正常
    • 从机率先发出指令,CLK怎么处理?CLK不同步可能会丢包。
    • 主机通讯即将结束时,从机发出指令,CLK怎么处理? 

    如上,难度在于第2、3;没有特定方案处理,主机是无法完整的读取到从机数据,甚至读取不到。

      

    2. 问题

    TODO

    2.1 SPI协议Motorola版跟TI版本区别

    SSI(Synchronous Serial Interface)由TI公司定义的接口协议标准。

    SPI(Serial Peripheral Interface)是由Motorola公司定义的接口协议标准。

    SPI标准协议下(Motorola),拉低CS,主机输出CLK,进行读写操作。但是TI协议的SPI(SSI)并非如此。TI SSI串行帧同步SSIFss在发送每个帧之前产生宽度为个时钟周期的高脉冲。SSI 模块和片外从设备都在SSIClk 的上升沿驱动输出数据,在SSIClk 的下降沿锁存另一端的输入数据。如下图:

    TODO

    2.2 DMA使用

    TODO

    3. 框架

    怎么设计呢:

    • 增加IO口来作为双方交互? 
    • 增加通讯指令作为双方交互?
    • 更换SPI协议/模式?

    3.1 增加IO口交互设计思路:

    SPI标准协议下(Motorola),拉低CS,主机输出CLK,进行读写操作。

    3.1.1 从机率先发出指令,CLK怎么处理?

    1). 通过增加EN-脉冲与每帧数据结束符处理(保证读取的数据完整性)

    开机将PIN EN 默认置高,从机需要给主机发送数据时候,短暂拉低PIN EN,给予一个低脉冲信号,主机收到下降沿触发,输出CLK, 读取数据,读取到完整数据(数据结束符)后停止。

    结束符

    3.1.2 主机通讯即将结束时,从机发出指令,CLK怎么处理? 

    由于额外增加了一个IO操控,主机通讯即将结束时,通过3.1.1方法操作有效。

    3.1.3 增加多个IO

    不排除增加多个IO(两个)来处理交互逻辑, ̄□ ̄||,有些公司确实这样处理,考虑到IO的高低电平,并未采用IO脉冲方式。

    3.2 增加通讯指令作为双方交互? 

    主机轮询操作: 

    主机不定时的寻问从机的操作是否完成,是否已经准备好数据,准备好之后,则需要发送时钟给从机,才能把从机中的数据收上来。 

    TODO

    3.3 更换SPI协议/模式? 

    TODO

    4. 验证

    TODO

    5. 总结 

    TODO

  • 相关阅读:
    医药制药行业有机VOCs废气治理
    【个人学习总结】CRC校验原理及实现
    公网官网建站笔记(五):域名工信部备案完整流程并解析公网访问
    图文结合,手把手教你ubuntu18-live-server-amd64服务器版的安装、配置静态ip以及换源
    Meta首份元宇宙白皮书9大看点,瞄准80万亿美元市场
    SpringBoot 学习笔记
    Zookeeper集群 + Kafka集群的详细介绍与部署
    Solaris 9 Sparc下安装整合Apache2和Tomcat5
    【ccf2021训练赛】图书推荐算法(SASRec序列推荐模型)
    格力售后官方电话 - (24小时全国客服中心)
  • 原文地址:https://blog.csdn.net/liaochaoyun/article/details/127404999