TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS570LC43x HDK Mibspi CS问题

各位好,

Q1:我在调试Mibspi时发现CS信号一直处于低电平状态,不知道是否是设置问题?E2E上说这是正常的:http://e2e.ti.com/support/microcontrollers/hercules/f/312/t/220270,如该贴解决方法,但是对于Mibspi手动无法把CS拉低,因为你不知道数据什么时候传送完成(不加以判断),请问CS信号是否由MCU自主控制,怎么设置?

Q2:我在发送一个Group(group id = 0)数据后,判断发送是否完成:

while(((((mibspiREG1->TGINTFLG & 0xFFFF0000U) >> 16U)>> group) & 1U) != 1U){}

之后开始接收数据:

*buf = mibspiRAM1->rx[0].data;

接收到的数据是上次的数据!我的理解是,虽然已判断数据发送完成了,从设备也返回了数据,但还未还得及写入RAM。请问正确的接收方法是什么?

谢谢!

gaoyang9992006:

http://bbs.eeworld.com.cn/thread-376724-1-1.html

http://www.deyisupport.com/question_answer/microcontrollers/hercules/f/70/t/97104.aspx

———————

MibSPI可以配置正常功能SPI和多缓冲SPI, 上电或一个系统级的复位后,每个模块中的寄存器位被设置为默认状态。复位位被设置为1后该寄存器才是可写的。

二 、兼容性(SPI)模式配置

下面软件配置步骤的详细列表,发送或接收的数据前应执行的。
只要SPIENA保持低, 整个时间,正在配置SPI, 寄存器进行编程的顺序是不重要的.
•通过设置RESET位启用SPI
•通过设置在SPIPC0寄存器相应位,设置SIMO,SOMI,CLK和可选CSX,ENA引脚配置为SPI功能。
•配置模块功能的Master或Slave使用CLKMOD和MASTER位。
•配置使用SPIFMTx寄存器所需的SPI数据格式。
•如果该模块选择为主机的功能,可使用SPIDELAY寄存器配置延时参数。
•如果需要使用SPIINT0寄存器使能中断。
•选择要使用的CS通过设置在SPIDAT1寄存器CSNR位。
•如果需要配置在SPIDAT1寄存器CSHOLD和WDEL位。
•通过设置DFSEL位选择数据字格式,选择配置SPIFMTx寄存器(0到3)的数来用于通信。
•设置LOOPBACK位内部连接发送器和接收器。
(此功能是用来进行自我测试。不要配置到外部设备的正常通信)。
•SPI配置后设置SPIENA 为1。
•使用SPIDAT1和SPIBUF寄存器,进行发送和接收数据。
•写下一个数据到SPIDAT1寄存器前,用户必须等待TXFULL 复位或TXINT。
•从SPIBUF寄存器读取数据之前,用户必须等待 RXEMPTY  复位或RXINT

三、HALCoGen初始化的了解

SPI Global Control Register 1 (SPIGCR1)-Bit0
SPIGCR1[1]:CLKMOD             时钟模式
SPIGCR1[0]:MASTER              主,从机模式
SPI Interrupt Register (SPIINT0)
SPIINT0[24] :ENABLE HIGHZ      SPIENA脚高阻抗使能
SPI Interrupt Register (SPIINT0)
SPIINT0[9]:TXINT                  发送中断。
SPIINT0[8]:RXINT                  接收中断。
SPIINT0[6]:OVRNINT            接收溢出中断。
SPIINT0[4]:BITERR        位错误中断。
SPIINT0[3]:DESYNC             无法同步从机中断。 (主模式)
SPIINT0[2]:PARERR             奇偶错误中断
SPIINT0[1]:TIMEOUT            SPIENA引脚超时中断。
SPIINT0[0]:DLNERR             数据长度错误中断(线)选择。

SPI Interrupt Level Register (SPILVL)
SPILVL[9]:TXINTLVL                    发送中断级  
SPILVL[8]:RXINTLVL                    接收中断级
SPILVL[6]:RXOVRNINTLVL         接收溢出中断级
SPILVL[4]:BITERRLVL                 位错误中断级
SPILVL[3]:DESYNCLVL               无法同步从机中断级。 (主模式)
SPILVL[2]:PARERRLVL               奇偶错误中断级
SPILVL[1]:TIMEOUTLVL              SPIENA引脚超时中断级。
SPILVL[0]:DLENERRLVL            数据长度错误中断级(线)选择。

SPI Data Format Registers (SPIFMT)
Shift LSB first      SPIFMT[20]:SHIFTDIR                    数据格式x移位方向
Wait for Enable   SPIFMT[21]:WAITENA                         主站等待从站的数据格式XENA信号
Parity enable     SPIFMT[22]: PARITYENA                           数据格式x奇偶使能。
Odd parity        SPIFMT[23]: PARPOL                         奇偶极性
Clock Polarity       SPIFMT[17]: POLARITY                      SPI数据格式x时钟极性
Clock Phase          SPIFMT[16]: PHASE                                   SPI数据格式x时钟延迟

Wdelay            SPIFMT[31..24]:WDELAY                  传输的数据格式X(X=0,1,2,3)之间延迟
Charlen              SPIFMT[4..0]: CHARLEN                   SPI数据格式x的数据字的长度
Baudrate          Brformatx=VCLK1/(PRESCALEx+1);SPICLK(VCLK) 波特率

SPI Delay Register (SPIDELAY)
SPIDELAY[31..24]:C2TDELAY:片选激活发送开始
SPIDELAY[23..16]:T2CDELAY:发送结束片选无效
SPIDELAY[ 7..0 ]:C2EDELAY:片选ENA超时
SPIDELAY[15..8 ]:T2EDELAY:发送完成ENA无效超时

SPI Pin Control Register 0 (SPIPC0) GIO或SPI功能选择脚
SPI Pin Control Register 1 (SPIPC1) SPI功能脚方向
SPI Pin Control Register 2 (SPIPC2) 读SPI功能脚电平
SPI Pin Control Register 3 (SPIPC3) 写SPI读功能脚电平
SPI Pin Control Register 4 (SPIPC4) 置位SPI功能脚
SPI Pin Control Register 5 (SPIPC5) 清除SPI功能脚
SPI Pin Control Register 6 (SPIPC6) SPI功能脚开漏使能
SPI Pin Control Register 7 (SPIPC7) SPI功能脚拉控制启用/禁用
SPI Pin Control Register 8 (SPIPC8) SPI功能脚上,下拉选择

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LC43x HDK Mibspi CS问题
分享到: 更多 (0)