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.

[参考译文] CCS/TMS320F28379D:SPI-C 配置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/950788/ccs-tms320f28379d-configuration-of-spi-c

器件型号:TMS320F28379D
Thread 中讨论的其他器件:controlSUITE

工具/软件:Code Composer Studio

大家好、

我尝试将 SPI-C 与 TMS320F2837xD 上的 GPIO50、GPIO51、GPIO52和 GPIO53搭配使用

首先、我在 controlSUITE 中的文件夹"v190"中提供名为"SPI_LOOP_CPU1"的示例代码(如果有要求、我可以帮助找到该代码。 也添加到末尾、无变化)

配置为 GPIO16、GPIO17、GPIO18和 GPIO19上的 SPI-A。 当代码被烧断时、我可以看到 CLK 信号、它工作正常。 我可以更改引脚、如果我使用端口 A、则仍然可以正常工作  

但是、当根据 SPI-C 使用 GPIO50、GPIO51、GPIO52和 GPIO53进行配置时、它不起作用。 我要做的是更改 GPIO init 文件上的 GPIO、并使用"SpicRegs"而不是"SpiaRegs"。  

我检查了以下情况:示例代码(SPICCR、SPICTL、SPIBRR、SPICCR、SPIPRI、 SPITXBUF、SPIFFTX、SPIFFRX 和 SPIFFCT)应具有与端口相关的差异、但"高速 SPI"除外、此时我不感兴趣、并且已取消标记(SPICCR 位#5为零)

请告诉我您的建议。

谢谢、

Okan

//######################################################################################################################
//文件:example_2837xDSpi_FFDLB.c
//标题:SPI 数字环回程序。
//
//! addtogroup cpu01_example_list
//!

SPI 数字回路(SPI_LOOP)


//!
//! 该程序使用外设的内部回路测试模式。
//! 而不是引导模式引脚配置、没有其他硬件配置
//! 要求。 不使用中断。
//!
//! 发送数据流、然后与接收到的数据流进行比较。
//! 发送的数据如下所示:\n
//! 0000 0001 0002 0003 0004 0005 0006 0007… FFFE FFFF \n
//! 这种模式会一直重复。
//!
//! b 监视\b 变量\n
//! -\b sdata -已发送数据
//! -\b RDATA -接收到的数据
//
//######################################################################################################################
//$TI 发行版:F2837xD 支持库 v190美元
//$Release Date:Mon Feb1 16:51:57 CST 2016 $
//版权所有:版权所有(C) 2013-2016 Texas Instruments Incorporated -
// http://www.ti.com/ 保留所有权利$
//######################################################################################################################

#include "F28x_Project.h"//设备头文件和示例 include 文件

//此文件中找到的函数的原型语句。
//__interrupt void ISRTimer2 (void);
void delay_loop (void);
void SPI_xmit (uint16 a);
void SPI_Fifo_init (void);
void SPI_init (void);
void 错误(void);

void main (void)

uint16 sdata;//发送数据
uint16 RDATA;//接收的数据

//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 F2837xD_SYSCTRL.c 文件中。
InitSysCtrl();

//步骤2. 初始化 GPIO:
//此示例函数位于 F2837xD_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
// InitGpio();//针对此示例跳过
//仅为 SPI-A 功能设置 GP I/O
//此函数位于 F2837xD_SPI.c 中
InitSpiaGpio();

//步骤3. 清除所有_interrupts 并初始化 PIE 矢量表:
//禁用 CPU __interrupts
Dint;

//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE __interrupts 和标志
//被清除。
//此函数位于 F2837xD_PIECTRL.c 文件中。
InitPieCtrl();

//禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志:
IER = 0x0000;
IFR = 0x0000;

//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是__interrupt
//在本例中未使用。 这对于调试很有用。
//可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2837xD_PieVect.c 中找到
InitPieVectTable();

//步骤4. 初始化器件外设:
SPI_Fifo_init();//初始化 SPI FIFO
SPI_init();// init SPI

//步骤5. 用户特定代码:
//此示例中不使用中断。
sdata = 0x0000;
for (;;)

//发送数据
SPI_xmit (sdata);
//等待数据被接收
while (SpiaRegs.SPIFFRX.bit.RXFFST!=1){}
//检查已发送的数据
RDATA = SpiaRegs.SPIRXBUF;
if (RDATA!= sdata) error();
sdata++;

//步骤7. 在此处插入所有本地中断服务例程(ISR)和函数:

void delay_loop ()

长 I;
对于(i = 0;i < 1000000;i++){}

空错误(空)

asm (" ESTOP0");//测试失败!! 停下来!
适用于(;);

void SPI_init()

SpiaRegs.SPICCR.all =0x000F;//复位打开、上升沿、16位字符位
SpiaRegs.SPICTL.ALL =0x0006;//启用主控模式、正常相位、
//启用 TALK、禁用 SPI int。
SpiaRegs.SPIBRR.ALL =0x007F;
SpiaRegs.SPICCR.all =0x009F;//从复位中撤回 SPI
SpiaRegs.SPIPRI.bit.FREE = 1;//设置断点以避免干扰 xmission

void SPI_xmit (uint16 A)

SpiaRegs.SPITXBUF=A;

void SPI_Fifo_init()

//初始化 SPI FIFO 寄存器
SpiaRegs.SPIFFTX.All=0xE040;
SpiaRegs.SPIFFRX.All=0x2044;
SpiaRegs.SPIFFCT.All=0x0;

//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//不再需要。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

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

    您好、Okan、

    在 CCS 中、当您启动调试会话时、您将看到 "Registers"窗口。 您应该能够在其中找到 SpicRegs。 我会检查那里、以确保在您更改代码后确实正确配置了 SPI 寄存器。  

    另一个潜在问题可能是引脚多路复用器配置不正确。 如果您可以发布该代码片段、我们可以查看。