请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LAUNCHXL-CC2640R2 主题中讨论的其他器件:ADS1293
工具/软件:TI-RTOS
您好 TI 开发团队
我有一个问题。
开发版本:CCS 7.0
参考 Borad:CC2640R2_LAUNCHXL
SampleSource:uartecho_CC2640R2_LANCHXL
测试 SPI 板:ads1293 (在我们公司内制造)
如何读取 SPI 数据?
/* 版权所有(c) 2015-2016、德州仪器(TI)公司 *保留所有权利。 * * 只要 符合以下条件*、允许以源代码和二进制形式重新分发和使用: * *源代码的重新分发必须保留上述版权 声明*、此条件列表和以下免责声明。 * ***二进制形式的再发行必须在 *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。 * ***未经 事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。 * *本软件由版权所有者和贡献者"按原样"提供 *、 不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或 *贡献者都不对任何直接、间接、偶然、特殊、 *模范、 或相应的损害(包括但不限于 *采购替代产品或服务;丧失使用、数据或利润; *或业务中断)、但出于任何责任理论 、*无论是在合同中、严格责任还是由于 使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他) 、*即使已获悉可能会发生此类损坏。 // /* === uartecho.c ==== */ #include #include /*驱动程序头文件*/ #include #include #include #include #include /*示例/板头文件*/ #include "Board.h" #include "TI_ADS1293_register_settings.h" #include "TI_ADS1293.h" /*SPI 调用驱动程序*/ SPI_Handle spihandle; SPI_Params Writparams; SPI_Transaction spitransaction; uint8_t txBuf[100]={0x00、};//传输缓冲 区 uint8_t rxBuf[100]={0x00、}; void spieByte (uint8_t *写入) { memcpy (txBuf、write、sizeof (write)); spi_transfer (spithandle、&spitransaction); memset (txBuf、0x00、sizeof (txBuf)); } void TI_ADS1293_SPIWriteReg (uint8_t addr、uint8_t value) { uint8_t inst[2]={0x00、0x00}; dr[0]= ADS1293_WRITE_BIT & adinst; //寄存器地址 inst[1]=值; spiWriteByte (inst); //发送寄存器地址 } void TI_ADS1293_SPIReadReg (uint8_t addr) { txBuf[0]= ADS1293_read_bit | addr; //寄存器地址 SPI_transfer (spitransaction、&spitransaction); } void TI_ADS1293_WriteRegSettings (void) { TI_ADS1293_SPIWriteReg (TI_ADS1293_CONFIG_REG、 TI_ADS1293_CONFIG_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_FLEX CH1_CN_REG、 TI_ADS1293_FLEX CH1_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_FLEX CH2_CN_REG、 TI_ADS1293_FLEX CH2_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_FLEX CH3_CN_REG、 TI_ADS1293_FLEX CH3_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_FLEX PACE_CN_REG、 TI_ADS1293_FLEX PACE_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_FLEX VBAT_CN_REG、 TI_ADS1293_FLEX VBAT_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_LOD_CN_REG、 TI_ADS1293_LOD_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_LOD_EN_REG、 TI_ADS1293_LOD_EN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_LOD_CURRENT_REG、 TI_ADS1293_LOD_CURRENT_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_LOD_AC_CN_REG、 TI_ADS1293_LOD_AC_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_CMDET_EN_REG、 TI_ADS1293_CMDET_EN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_CMDET_CN_REG、 TI_ADS1293_CMDET_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_RLD_CN_REG、 TI_ADS1293_RLD_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_Wilson_EN1_REG、 TI_ADS1293_Wilson_EN1_REG_Value); TI_ADS1293_SPIWriteReg (TI_ADS1293_Wilson_EN2_REG、 TI_ADS1293_Wilson_EN2_REG_Value); TI_ADS1293_SPIWriteReg (TI_ADS1293_Wilson_EN3_REG、 TI_ADS1293_Wilson_EN3_REG_Value); TI_ADS1293_SPIWriteReg (TI_ADS1293_Wilson_CN_REG、 TI_ADS1293_Wilson_CN_REG_Value); TI_ADS1293_SPIWriteReg (TI_ADS1293_REF_CN_REG、 TI_ADS1293_REF_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_OSC_CN_REG、 TI_ADS1293_OSC_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_AFE_RES_REG、 TI_ADS1293_AFE_RES_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_AFE_SHDN_REG、 TI_ADS1293_AFE_SHDN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_AFE_FAULT_CN_REG、 TI_ADS1293_AFE_FAULT_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_AFE_dither_EN_REG、 TI_ADS1293_AFE_DITHER _EN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_AFE_PACE_CN_REG、 TI_ADS1293_AFE_PACE_CN_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_R2_RATE_REG、 TI_ADS1293_R2_RATE REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_R3_RADE1_REG、 TI_ADS1293_R3_RADE1_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_R3_R2_REG、 TI_ADS1293_R3_Rate2_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_R3_Rate3_REG、 TI_ADS1293_R3_Rate3_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_P_DRATE_REG、 TI_ADS1293_P_DRATE_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_DIS_EFILTER_REG、 TI_ADS1293_DIS_EFILTER_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_DRDYB_SRC_REG、 TI_ADS1293_DRDYB_SRC_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_SYNCOUTB_SRC_REG、 TI_ADS1293_SYNCOUTB_SRC_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_MASK_DRDYB_REG、 TI_ADS1293_MASK_DRDYB_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_MASK_ERR_REG、 TI_ADS1293_MASK_ERR_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_ALARM_FILTER_REG、 TI_ADS1293_ALARM_FILTER_REG_VALUE); TI_ADS1293_SPIWriteReg (TI_ADS1293_CH_Cnfg_REG、 TI_ADS1293_CH_Cnfg_REG_VALUE); } // *=== mainThread ==== // void * mainThread (void * arg0) { 特性 输入; 特性 A ='A'; 特性 b ="b"; 特性 output[2]={0x00、}; const char echoPrompt[]="回显字符:\r\n"; unsigned char reg_read_data; UART_Handle UART; UART_Params uartParams; //调用驱动程序初始化函数 GPIO_init(); UART_INIT(); spi_init(); //打开用户 LED GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON); //创建一个数据处理关闭的 UART。 UART_PARAMS_INIT (uartParams); uartParams.writeDataMode = UART_DATA_BINARY; uartParams.readDataMode = UART_DATA_BINARY; uartParams.readReturnMode = UART_return_full; uartParams.readEcho = UART_ECHO_OFF; uartParams.baudrate = 115200; UART = UART_OPEN (Board_UART0、uartParams); if (UART == NULL){ //UART_open()失败 while (1); } UART_WRITE (UART、echoPrompt、sizeof (echoPrompt)); SPI_PARAMS_INIT (&spiparams); //spirparams.bitrate = 204800;//102400;//204800;//4805000;//1000000; //spiparams.frameFormat = SPI_POL0_PHA0; spiparams.mode = SPI_MASTER; spiparams.transferMode = SPI_MODE_BLOCKING; //配置事务 spitransaction.count = 2; spitransaction.txBuf = txBuf; spitransaction.rxBuf = rxBuf; //打开 SPI 并执行传输 spiHandle = SPI_open (Board_SPI1、&spiparams); if (!spitHandle)(如果!spit { while (1); } TI_ADS1293_WriteRegSettings(); TI_ADS1293_SPIReadReg (TI_ADS1293_CH_Cnfg_REG); REG_READ_DATA = rxBuf[0]; /*循环永久回显*/ while (1){ UART_READ (UART、INPUT、1); //UART_WRITE (UART、INPUT、1); if (输入='A') { UART_WRITE (UART、&A、1); TI_ADS1293_SPIReadReg (TI_ADS1293_CH_Cnfg_REG); } 否则、如果(输入='b') { UART_WRITE (UART、&b、1); REG_READ_DATA = rxBuf[0]; output[0](reg_read_data / 16)+0x30; output[1]=(REG_READ_DATA % 16)+0x30; UART_WRITE (UART、&OUTPUT [0]、1); UART_WRITE (UART、&output[1]、1); output[0]='c'; output[1]='d'; UART_WRITE (UART、&OUTPUT [0]、1); UART_WRITE (UART、&OUTPUT [1]、1); } }