CC26xx SPI
来源:互联网 发布:知乎俄罗斯模特在中国 编辑:程序博客网 时间:2024/06/07 22:36
/******************************************************************************** Filename: bsp_spi.c* Revised: $Date$* Revision: $Revision$** Description: Layer added on top of RTOS driver for backwards* compatibility with non RTOS SPI driver.** Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.** Redistributions in binary form must reproduce the above copyright* notice, this list of conditions and the following disclaimer in the* documentation and/or other materials provided with the distribution.** Neither the name of Texas Instruments Incorporated nor the names of* its contributors may be used to endorse or promote products derived* from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*******************************************************************************/#ifdef TI_DRIVERS_SPI_INCLUDED/******************************************************************************* * INCLUDES */#include <ti/sysbios/family/arm/cc26xx/Power.h>#include <ti/sysbios/knl/Task.h>#include <ti/drivers/spi/SPICC26XXDMA.h>#include <ti/drivers/dma/UDMACC26XX.h>#include <driverlib/ssi.h>#include "Board.h"#include "bsp_spi_gnss.h"#include "string.h"/******************************************************************************* * GLOBAL variables */extern PIN_Handle hGpioPin;/******************************************************************************* * LOCAL variables */static SPI_Handle spiHandle = NULL;static SPI_Params spiParams;/******************************************************************************* * @fn bspSpiWrite * * @brief Write to an SPI device * * @param buf - pointer to data buffer * @param len - number of bytes to write * * @return '0' if success, -1 if failed */int bspSpiWrite(const uint8_t *buf, size_t len){ SPI_Transaction masterTransaction; masterTransaction.count = len; masterTransaction.txBuf = (void*)buf; masterTransaction.arg = NULL; masterTransaction.rxBuf = NULL; return SPI_transfer(spiHandle, &masterTransaction) ? 0 : -1;}/******************************************************************************* * @fn bspSpiRead * * @brief Read from an SPI device * * @param buf - pointer to data buffer * @param len - number of bytes to write * * @return '0' if success, -1 if failed */int bspSpiRead(uint8_t *buf, size_t len){ SPI_Transaction masterTransaction; masterTransaction.count = len; masterTransaction.txBuf = NULL; masterTransaction.arg = NULL; masterTransaction.rxBuf = buf; return SPI_transfer(spiHandle, &masterTransaction) ? 0 : -1;}/******************************************************************************* * @fn bspSpiWriteRead * * @brief Write to and read from an SPI device in the same transaction * * @param buf - pointer to data buffer * @param wlen - number of bytes to write * @param rlen - number of bytes to read * * @return '0' if success, -1 if failed */int bspSpiWriteRead(uint8_t *buf, uint8_t wlen, uint8_t rlen){ SPI_Transaction masterTransaction; bool success; masterTransaction.count = wlen + rlen; masterTransaction.txBuf = buf; masterTransaction.arg = NULL; masterTransaction.rxBuf = buf; success = SPI_transfer(spiHandle, &masterTransaction); if (success) { memcpy(buf,buf+wlen,rlen); } return success ? 0 : -1;}/******************************************************************************* * @fn bspSpiOpen * * @brief Open the RTOS SPI driver * * @param none * * @return none */void bspSpiOpen(void){ if (spiHandle == NULL) { /* Configure SPI as master, 4 mHz bit rate*/ SPI_Params_init(&spiParams); spiParams.bitRate = 4000000; spiParams.mode = SPI_MASTER; spiParams.transferMode = SPI_MODE_BLOCKING;spiParams.frameFormat = SPI_POL0_PHA0; /* Attempt to open SPI. */ spiHandle = SPI_open(Board_SPI0, &spiParams); if (spiHandle == NULL) { Task_exit(); } }}/******************************************************************************* * @fn bspSpiFlush * * @brief Get rid of garbage from the slave * * @param none * * @return none */void bspSpiFlush(void){ /* make sure SPI hardware module is done */ while(SSIBusy(((SPICC26XX_HWAttrs*)spiHandle->hwAttrs)->baseAddr)) { };}/******************************************************************************* * @fn bspSpiFlashSelect * * @brief Select/deselect the external flash on the SensorTag * * @param select - true to select, false to deselect * * @return none */void bspSpiFlashSelect(bool select){ if (select) { PIN_setOutputValue(hGpioPin,Board_SPI0_CSN,Board_FLASH_CS_ON); } else { PIN_setOutputValue(hGpioPin,Board_SPI0_CSN,Board_FLASH_CS_OFF); }}/******************************************************************************* * @fn bspSpiClose * * @brief Close the RTOS SPI driver * * @return none */void bspSpiClose(void){ if (spiHandle != NULL) { SPI_close(spiHandle); spiHandle = NULL; }}#endif
阅读全文
0 0
- CC26xx SPI
- Cc26xx系列spi驱动失败的解决办法
- CC26xx PWM
- CC26XX SBL
- CC26xx I2S
- [CortexM3--CC26XX]IO Control
- [CortexM3--CC26XX]UARTs
- CC26xx &&CC13xx 多线程
- [CortexM3--CC26XX]Memory系统VIMS
- CC26xx芯片烧录问题
- CC26XX之OAD(转)
- CC26xx/CC13x0的SCS应用
- CC26XX定时器以及按键中断
- SPI
- SPI
- SPI
- SPI
- SPI
- JavaScript定时器原理及高级使用
- gdb多进程/多线程调试实战
- node 回调函数
- HbaseTemplate进阶:利用hbase.properties文件对Hbase的集群和端口进行配置
- 洛谷 P1140 相似基因
- CC26xx SPI
- Windows64 Py-Faster-RCNN的配置
- JSP&Servlet 监听器
- Vue之实例详解
- TTS开源方案open jTalk
- iOS编程基础-Swift(五)-流程控制与其他
- 千万级规模高性能、高并发的网络架构经验分享
- Lambda表达式全面了解——通俗易懂
- MyBatis一对一查询