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能否缩短?