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.

[参考译文] TMS320F28377D:ADS7028:无法通过 F28377D 的 MOSI 写入数据

Guru**** 2826195 points

Other Parts Discussed in Thread: ADS7028

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1601863/tms320f28377d-ads7028-not-able-to-write-data-through-mosi-from-f28377d

器件型号: TMS320F28377D
主题: ADS7028 中讨论的其他器件

我尝试在自动序列模式下在 ADS7028 中读取数据。 我已经开始发送数据以在 ADS 上写入、但我想在连接控制卡 ADS7028 SPI 连接器之前检查以下配置。  
下面是我的代码。  

#include “driverlib.h"</s>“
#include “device.h"</s>“

define ADS_SPI_BASE spic_base   
#define ADS_CS_GPIO  53 //手动芯片选择

#define OPCODE_WRITE  0x08
#define REG_ADDR    0x11
#define REG_DATA    0x01

//--原型--
void InitGPIO (System_And_);
void InitSPI_DebugMode (void);
void ADS_RegisterWrite (uint8_t regAddr、uint8_t data);

void main (void)

  // 1。 初始化系统
  设备初始化 ();
  device_initGPIO();
  interrupt_initModule();
  Interrupt_initVectorTable();

  // 2. 设置引脚
  System_And_();

  // 3. 设置 SPI((1MHz、用于 3 字节写入的 8 位模式)
  InitSPI_DebugMode();

  // 4. 上电延迟
  DEVICE_DELAY_US (5000);

  while (1)
  {

    ADS_RegisterWrite (0x11、0x01);
    DEVICE_DELAY_US (50);
  }
}

System_And_初始化 GPIO (void)

  GPIO_unlockPortConfig (GPIO_PORT_B、0xFFFFFFFF);

  //配置 SPI-C 引脚 (GPIO 50、51、52)
  GPIO_setMasterCore (50、GPIO_CORE_CPU1);
  GPIO_setPinConfig (GPIO_50_SPISIMOC);
  GPIO_setPadConfig (50、GPIO_PIN_TYPE_PULLUP);
  GPIO_setQualificationMode (50、GPIO_QUAL_ASYNC);

  GPIO_setMasterCore (51、GPIO_CORE_CPU1);
  GPIO_setPinConfig (GPIO_51_SPENSIC);
  GPIO_setPadConfig (51、GPIO_PIN_TYPE_PULLUP);
  GPIO_setQualificationMode (51、GPIO_QUAL_ASYNC);

  GPIO_setMasterCore (52、GPIO_CORE_CPU1);
  GPIO_setPinConfig (GPIO_52_SPICLKC);
  GPIO_setPadConfig (52、GPIO_PIN_TYPE_PULLUP);
  GPIO_setQualificationMode (52、GPIO_QUAL_ASYNC);

  //将 CS 引脚 (GPIO 53) 配置为手动输出
  GPIO_setMasterCore (53、GPIO_CORE_CPU1);
  GPIO_setPinConfig (GPIO_53_GPIO53);
  GPIO_setDirectionMode (53、GPIO_DIR_MODE_OUT);
  GPIO_writePin (53、1);//起始为高电平
}

void InitSPI_DebugMode (void)

  SPI_disableModule (ADS_SPI_BASE);

  //配置:1MHz、8 位数据大小、模式 0(极性 0、相位 0)
  //我们使用 8 位大小、因此我们可以发送操作码 (8)+ Addr (8)+ Data (8)
  SPI_setConfig (ADS_SPI_BASE、DEVICE_LSPCLK_FREQ、SPI_PROT_POL0PHA1、
         SPI_MODE_MASTER、1000000、8);

  spi_disableLoopback (ADS_SPI_BASE);
  SPI_setEmulationMode (ADS_SPI_BASE、SPI_emulation_free_run);

  //启用 FIFO(有助于缓冲 3 个字节)
  SPI_enableFIFO (ADS_SPI_BASE);

  SPI_enableModule (ADS_SPI_BASE);
}

void ADS_RegisterWrite(uint8_t regAddr、uint8_t 数据)

  GPIO_writePin (ADS_CS_GPIO、0);
  DEVICE_DELAY_US (2);

  GPIO_writePin (ADS_CS_GPIO、0);
  DEVICE_DELAY_US (2); // t_CSSC 延迟

  //发送所有 3 个字节
  SPI_writeDataBlockingFIFO (ADS_SPI_BASE、opode_write); //写入命令
  SPI_writeDataBlockingFIFO (ADS_SPI_BASE、regAddr);    //寄存器地址
  SPI_writeDataBlockingFIFO (ADS_SPI_BASE、DATA);      //数据

  //等待传输完成
  //检查 SPI 是否仍然繁忙
  while (SPI_isBusy (ADS_SPI_BASE)){}

  DEVICE_DELAY_US (20);
  GPIO_writePin (ADS_CS_GPIO、1);
  DEVICE_DELAY_US (2);
}


CLK 信号
2. mosi

3. Cs.
硬件中没有用于任何信号的上拉电阻器。 MOSI 应该在时钟周期内生成信号位、对吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Souradeep、  

    上面给出的示例代码看起来正确。 您能否配置不同的引脚或 SPI 实例集并检查它是否有效?  
    如果您使用的是控制卡、则可以使用下图中提到的引脚:

    此致、  
    Pranav Siddappa.