This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

tms570ls0332,spi的问题

Other Parts Discussed in Thread: HALCOGEN

想问一下,这个函数中,指向数据的指针是16位的,我能不能改为uint8 * srcbuff来使用这个函数并实现传递8位数据的功能?

  • 不用改,只要在HALCoGen中设置为传输8位就可以了,如图所示

    我的主程序如下:

    /** @file sys_main.c 
    *   @brief Application main file
    *   @date 07-July-2017
    *   @version 04.07.00
    *
    *   This file contains an empty main function,
    *   which can be used for the application.
    */
    
    /* 
    * Copyright (C) 2009-2016 Texas Instruments Incorporated - 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.
    *
    */
    
    
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    /* Include Files */
    
    #include "sys_common.h"
    
    /* USER CODE BEGIN (1) */
    #include "system.h"
    #include "spi.h"
    /* USER CODE END */
    
    /** @fn void main(void)
    *   @brief Application main function
    *   @note This function is empty by default.
    *
    *   This function is called after startup.
    *   The user can use this function to implement the application.
    */
    
    /* USER CODE BEGIN (2) */
    uint16 TX_Data_Master[8] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
    /* USER CODE END */
    
    int main(void)
    {
    /* USER CODE BEGIN (3) */
        spiDAT1_t dataconfig1_t;
    
        dataconfig1_t.CS_HOLD = TRUE;//CS 保持
        dataconfig1_t.WDEL    = TRUE;//帧数据传输结束后,延迟数个WDELAY
        dataconfig1_t.DFSEL   = SPI_FMT_0;//数据帧格式选择
        dataconfig1_t.CSNR    = 0xFE;//选择片选引脚
    
        spiInit();
        spiTransmitData(spiREG4, &dataconfig1_t, 8, TX_Data_Master);
        while(1);
    /* USER CODE END */
    
        return 0;
    }
    
    
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    

  • 谢谢你的回答,还有我想问我那样的方法可用么

  • 我感觉你这么改就得改动多处吧,你这么做的目的是?

  • 我只改了这个形参,函数里面的东西没动。这样改是为了写读eeprom,因为eeprom是八位数据传输的,如果我想储存8位数组的数据,而spiTransmitData这个函数形参是十六位指针,传递时会出问题的吧

  • 我感觉是有问题的,因为你指针的类型不一样,这样传递的时候会有问题.u16位的指针去访问u8位的数组是有问的吧

  • 嗯,所以我吧spiTransmitData函数里面u16指针,改为u8指针,eeprom实验是可以通过的,但不知道合不合理