TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F SPI总线 SPI_POL0_PHA0 与 SPI_POL0_PHA1 时序问题

SDK 版本: simplelink_cc2640r2_sdk_4_20_00_04

两块板子分别运行官方例程 spimaster 与 spislave。下面是示波器拍照

黄色线:nCS,蓝色线:CLK

1、frameFormat = SPI_POL0_PHA1(官方例程中使用的格式) 情况下

2、frameFormat = SPI_POL0_PHA0(我仅仅修改此处) 情况下

放大后

为什么 CLK 8个周期后 nCS会变高,而在SPI_POL0_PHA1下没有?

Viki Shi:

当使用SPI_POl0_PHA0模式时,硬件要求SPI master 每次传输时都需要触发FSS【片选脚】。 如果要使用此模式,你还需要配置一个片选脚

user5827764:

回复 Viki Shi:

请问哪里有这个FSS的详细介绍? 就你目前所给的信息,我还是不知道该如何做啊!

user5827764:

我在spimaster.c– masterThread — SPI_open 之后添加了如下代码,看示波器这个片选信号确实变为 CC2640R2_LAUNCHXL_SPI_FLASH_CS,可是上面问题依旧存在uint8_t csnPin = CC2640R2_LAUNCHXL_SPI_FLASH_CS;//IOID20int csnFlag = SPI_STATUS_SUCCESS;csnFlag = SPI_control(masterSpi, ***, &csnPin);if(csnFlag != SPI_STATUS_SUCCESS){Display_printf(display, 0, 0, "SPI_control failed! ret: %d\n", csnFlag);return (NULL);}

Viki Shi:

回复 user5827764:

fss的详细描述及使用方法请参考TRM:www.ti.com/…/swcu117i.pdf

Viki Shi:

回复 Viki Shi:

看一下这个网友分享帖,比较详细:www.mobibrw.com/…/13746

user5827764:

回复 Viki Shi:

我目前是通过一个GPIO充当外设的片选,在 SPI_transfer 之前前拉低,之后拉高。这样虽然可以正常通信了,但带来了新的问题。

我是在 SPI_transfer(SPI_MODE_BLOCKING)返回之后立即拉高,但离数据实际传输完成已经过去了3ms,而如果在SPI_POl0_PHA1模式下使用原来的片选引脚,则是在数据传输后立即拉高的。如图:

说明:CLK 4M;两次传输的有效数据是相同的

1、SPI_POl0_PHA0,GPIO模拟片选

2、SPI_POl0_PHA1 模式下使用原来的片选引脚

问题:

1、上面你说“还需要配置一个片选脚”  意思是不是用GPIO来模拟片选?

2、这个延迟的3ms能否缩短?

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F SPI总线 SPI_POL0_PHA0 与 SPI_POL0_PHA1 时序问题
分享到: 更多 (0)