求助CC2640 SPI问题
哪位大侠帮忙看一下,我按照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:参考如附件图片。