微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 求助CC2640 SPI问题

求助CC2640 SPI问题

时间:10-02 整理:3721RD 点击:

哪位大侠帮忙看一下,我按照TI的SPI    DEMO和SWRU393_CC2640_BLE_Software_Developer's_Guide.pdf文档编写的SPI程序,初始化如下

SPI_Params_init(&SbpSpiParams);

SbpSpiParams.bitRate = 1000000;
SbpSpiParams.mode = SPI_MASTER;
SbpSpiParams.transferMode = SPI_MODE_BLOCKING;
SbpSpiParams.dataSize = 8;
SbpSpiParams.frameFormat = SPI_POL0_PHA0;


SbpSpiHandle = SPI_open(CC2650_SPI0, &SbpSpiParams);

其余都是原有例程的(包括引脚分配、定义)等,但是在执行

SPI_transfer(SbpSpiHandle, &spiTransaction);

时就卡死了,也就是死机,不会执行下面的语句,请大侠们帮忙看看是什么问题?谢谢

没用过SPI,帮顶

跟您碰到一樣的問題,我是用CC2650+SMARTRF06,一樣在執行SPI_transfer的時候就停住

請問您解決這問題了嗎?

我也是一样的问题
用stack2.0没有这样的问题但是用stack2.1就会卡住
我是在SimpleBLEPeripheral的project中加了SPI的function

统一回复碰到此问题的同仁们:我之前SPI_transfer在一个中断中执行,问过TI的技术,他们说SPI_transfer会调用Semaphore_pend,所以不能在中断中执行SPI_transfer,所以我后来在中断中执行产生一个事件,然后在主程序执行操作事件来执行SPI_transfer,就可以了,但是我直接在主程序中执行SPI_transfer(没有用到事件)还是执行不了,因为SPI_transfer是TI给的,我看过他的函数,真的看不到问题所在,你们看看还是产生事件的方式来解决吧,希望对你们有所帮助,同时你们有更好的方式欢迎交流

我目前是把SPI_transfer放在SimpleBLEPeripheral_Event原本范例的事件,但还是卡住了

Hi Wenjie,

請教您如何產生一個事件來執行SPI_transfer,該事件是要在哪裡產生呢?

假設我在main()裡面要執行事件,那麼該事件應該要寫在哪裡比較洽當? 您可以舉個簡單的例子嗎,非常感謝!

我遇到了不能初始化的问题,后来发现是spi的片选信号的定义冲突导致的。大家可以尝试下这样的做法:检查下board.c文件下关于spi引脚初始化那里的内容,重点是关于spi片选信号的定义: 

.csnPin = PIN_UNASSIGNED//用户自己定义片选开始结束

 .csnPin = Board_SPI1_CSN//driver控制片选开始结束。(还有就是用了lcd的就不要跟这里冲突了)根据需要改这里,之后应该就可以了吧!

ps:参考如附件图片。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top