CC2640R2

(BLE) CC2640R2 SPI驱动(基于TI Drivers) 注意点

喜欢而已 提交于 2019-12-07 15:45:12
系统升级功能需要 把内部flash数据发送到外部flash做备份等操作。 注意,内部flash起始地址为0,和NULL是一样的, 因此在使用驱动接口的时候,对于第一个page的flash,会当作NULL处理, 这就引发bug,SPI驱动会认为TX-BUF为NULL而使用默认的0x00作为填充数据! 所以对于这个特别的page,先拷贝到ram再发送到驱动层, 且注意,不要使用memcpy,因为也会进行NULL判断。 按照如下方式(代码来自upgrade.c) //then copy the first page /****************************************************** Caution!!!! The fisrt flash page start addr is 0 !!! That is the same as NULL!!!! so copy to ram buffer first!!! DO NOT use memcpy!! ******************************************************/ do{ uint8_t buff[4]; pSrc = (const uint8_t*)INTFLASH_BLE_APP_ADDR; dstAddr=extFlashAddr; ((uint32

(BLE) CC2640R2 BIM下 SPI接口驱动能力问题

不羁的心 提交于 2019-12-07 02:05:10
Demo(示例代码)提供的bim工程使用sFlash,其spi接口上只挂载了这一个外设,因此没问题。 但实际项目,有2个spi外设,这样需要考虑spi接口驱动能力。 因此如下代码必须添加在SPI初始化接口中: //MUST add these code, //this makes spi multiply devices drive capbility IOCIOPortPullSet(BSP_SPI_MISO,IOC_IOPULL_DOWN); IOCIODrvStrengthSet(BSP_SPI_MOSI,IOC_CURRENT_8MA,IOC_STRENGTH_MAX); IOCIODrvStrengthSet(BSP_SPI_CLK_FLASH,IOC_CURRENT_8MA,IOC_STRENGTH_MAX); 1,分别表示需要给MISO接口进行下拉处理,否则其波形会有问题(当外设为高阻态时候) 2,CLK和MOSI必须设置最大的驱动能力。 在APP程序中,使用了TI的中间层, 实现文件《SPICC26XXDMA.c》里的 SPICC26XXDMA_initIO 函数, 可以看到驱动能力已经初始化为了为 PIN_DRVSTR_MED。 这样在app程序里面挂2个外设可以没有问题。 但是最好设置为max.因为一定几率下会出现问题。 来源: oschina 链接: