您好!
我必须使用 SPI 总线将 MCP4921 DAC 芯片连接到 tms320f28075。 为此、我将使用控制器的 SPIB 模块。 我使用 GPIO 引脚22、23、24、25作为 SPI 引脚。 我已进行了必要的更改,这些更改也反映在寄存器中。 问题是我无法在引脚上看到 SPI 时钟。请帮助。
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.
您好!
我必须使用 SPI 总线将 MCP4921 DAC 芯片连接到 tms320f28075。 为此、我将使用控制器的 SPIB 模块。 我使用 GPIO 引脚22、23、24、25作为 SPI 引脚。 我已进行了必要的更改,这些更改也反映在寄存器中。 问题是我无法在引脚上看到 SPI 时钟。请帮助。
Mark、您好!
回答您的问题、
1) 1)是的、多路复用器已正确配置。 我已经验证了 GPAMUX2和 GPGAMUX2的寄存器状态。
2) 2)启用模块后、我正在传输一个16位数据字。 我的是定制硬件。
我在非 FIFO 模式下使用 SPI,仅用于传输数据。
我使用片选引脚作为常规 GPIO 引脚、并仅通过软件处理。
这里是我用于初始化和传输数据的代码。 我已经使用了 C2000器件的 driverlib 中为28075控制器提供的函数。 请告诉我缺少什么 、或者它是生成时钟和传输数据的正确方法。
我还想知道 SPIDAT 寄存器何时加载 SPITXBUF 数据。 因为我观察到数据传入 SPITXBUF、但 SPIDAT 加载了0xffffffff。
我还在连接运行前后的寄存器状态快照。
void spiInitDAC()
{
/*初始化设备时钟*/
SYSCTL_enablePeripheral (SYSCTL_Periph_CLK_SPIB);
//时钟
GPIO_setPinConfig (GPIO_22_SPICLKB);
GPIO_setDirectionMode (22、GPIO_DIR_MODE_OUT);
//SIMO
GPIO_setPinConfig (GPIO_24_SPISIMOB);
GPIO_setQualificationMode (24、GPIO_QUAL_异 步);
//SOMI
GPIO_setPinConfig (GPIO_25_SPISOMIB);
GPIO_setPadConfig (25、GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode (25、GPIO_QUAL_异 步);
//芯片选择仅作为 GPIO 引脚
GPIO_setPadConfig (23、GPIO_PIN_TYPE_STD);
GPIO_setDirectionMode (23、GPIO_DIR_MODE_OUT);
GPIO_writePin (23、1);
/*必须在配置 SPI 之前将其置于复位状态*/
SPI_disableModule (SPIB_BASE);
/*SPI 配置。 使用1MHz SPICLK 和16位字大小。*/
SPI_setConfig (SPIB_BASE、DEVICE_LSPCLK_FREQ、SPI_PROT_POL0PHA0、
SPI_MODE_MASTER、1000000、16);
/*16位数据传输完成后停止*/
SPI_setEmulationMode (SPIB_BASE、SPI_emulation_stop_after_transmit);
/*配置完成。 启用模块。*/
SPI_enableModule (SPIB_BASE);
}
void config_mcp4921()
{
uint16_t write_command ={0x3C20};
GPIO_writePin (23、0);
SPI_writeDataNonBlocking (SPIB_BASE、WRITE_COMMAND);
GPIO_writePin (23、1);
}
Befor Run
运行后
谢谢、
Anvaya