请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28377S Thread 中讨论的其他部件:controlSUITE、 DAC8560
大家好、TI 社区、
我目前正在尝试配置 TMS320F28377S MCU、以便通过 SPIB (GPIO58至 GPIO61)发送24位数据流。 我知道 MCU 最多只能发送16位字;但是、通过配置 FIFO、它可以配置为立即发送连续数据。 我来发送三个8位字来实现我的24位数据流。 我正在处理 controlSUITE 中的 SPI_loopback (无中断)示例代码、但我将循环设置回0。
我正在监视 TX FIFO 状态寄存器、只能看到该寄存器被递增到2。 我还可以看到我的值被正确写入传输缓冲区。 我还想知道为什么在 LOOP Bback 位设置为0时填充接收缓冲器? 无论如何、我都在尝试与 DAC8560()通信以禁用它的内部基准。 我无法看到内部基准被禁用。 我为 SPIB 编写了一个简单的代码。 我想知道我做了什么错。
#define DAC8560_DISABLE_INT_SEQ_P1 0b0100100000000000 // 8位左对齐 #define DAC8560_disable_INT_SEQ_P2 0b0000010000000001 #define DAC8560_normal_OP 0b00000000000000000000 #define DAC8560_PWR_DWN_1K 0b0000000100000000 #define DAC8560_PWR_DWN_100K 0b0000001000000000 #define DAC8560_PWR_HIGH_Z 0b0000001100000000 volatile struct spi_regs * spi_ptr[spi_ch]={&SpiaRegs、&SpibRegs、&SpicRegs}; void disable_int_ref_DAC8560 (volatile struct spi_regs * spi) { SET_DAC8560 (SPI、DAC8560_DISABLE_INT_SEQ_P1、DAC8560_DISABLE_INT_SEQ_P2); } void SET_DAC8560 (volatile struct SPI_regs * SPI、UINT16 dac8560_op_mode、UINT16 DAC_level) { //uint16 RDATA; uint16 sdata[]={0、0、0}; uint16 i; sdata[0]= dac8560_op_mode; sdata[1]= DAC_level 和0xFF00; sdata[2]=(DAC_level 和0x00FF)<< 8; for (i=0;i<3;i++) { SPI_xmit (SPI、sdata[i]); } }