主题中讨论的其他器件: C2000WARE
工具/软件:Code Composer Studio
你(们)好
我已经使用微控制器 TMS320F28374D 制作了一个 PCB+组件、以便使 SPI 能够与其他器件通信。 我使用 C2000Ware、编写了以下代码、非常简单、但无法正常工作。
//包含的文件
#include "driverlib.h"
#include "device.h"
//函数原型
void initSPIAMaster (void);
void configGPIO (void);
//主函
void main (void)
{
//初始化设备时钟和外设
device_init();
//禁用引脚锁定并启用内部上拉。
DEVICE_initGPIO();
//初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。
interrupt_initModule();
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
interrupt_initVectorTable();
//为外部回送配置 GPIO。
configGPIOs();
//将 SPI A 设置为主器件,将其初始化为 FIFO 模式
initSPIAMaster();
//启用全局中断(INTM)和实时中断(DBGM)
EINT;
ERTM;
//永久循环。 暂停或放置断点以观察缓冲区。
while (1)
{
SPI_writeDataNonBlocking (SPIB_BASE、0xAA);
DEVICE_DELAY_US (50000);
}
}
//函数将 SPI A 配置为主器件并启用 FIFO。
void initSPIAMaster (void)
{
//必须在配置 SPI 之前将其复位
SPI_disableModule (SPIB_BASE);
// SPI 配置。 使用500kHz SPICLK 和8位字大小。
SPI_setConfig (SPIA_BASE、DEVICE_LSPCLK_FREQ、SPI_PROT_POL0PHA0、
SPI_MODE_MASTER、50000、8);
SPI_disableLoopback (SPIA_BASE);
SPI_setEmulationMode (SPIA_BASE、SPI_emulation_free_run);
//配置完成。 启用模块。
SPI_enableModule (SPIB_BASE);
}
//为外部回送配置 GPIO。
void configGPIO (void)
{
// GPIO17是 SPISOMIA。
GPIO_setMasterCore (17、GPIO_CORE_CPU1);
GPIO_setPinConfig (GPIO_17_SPISOMIA);
GPIO_setPadConfig (17、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (17、GPIO_QUAL_异 步);
// GPIO16是 SPISIMOA 时钟引脚。
GPIO_setMasterCore (16、GPIO_CORE_CPU1);
GPIO_setPinConfig (GPIO_16_SPISIMOA);
GPIO_setPadConfig (16、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (16、GPIO_QUAL_异 步);
// GPIO19是 SPISTEA。
GPIO_setMasterCore (19、GPIO_CORE_CPU1);
GPIO_setPinConfig (GPIO_19_SPISTEA);
GPIO_setPadConfig (19、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (19、GPIO_QUAL_异 步);
// GPIO18是 SPICLKA。
GPIO_setMasterCore (18、GPIO_CORE_CPU1);
GPIO_setPinConfig (GPIO_18_SPICLKA);
GPIO_setPadConfig (18、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (18、GPIO_QUAL_异 步);
}
//文件结束
使用示波器、我每500ms 测量一次 SPICLKA 的输出、似乎是正确的、我在上面看到8个时钟周期。 但是,SPISIMOA 我没有得到任何脉冲。 如果有任何帮助或意见,我将不胜感激。