CCS和MDK调试时SSI功能为什么前者可用后者不能用



我们利用TI的DK-LM3S9D96开发版开发一称量仪表。在开发中需要显示屏显示数据,我们采用了SSI功能来传送数据。使用的是SSI1口。程序编完进行调试。用CCS采用ICDI调试时,显示屏正常工作,能够显示需要的数据,但是当采用CCS生成的BIN文件烧制进芯片后却无法显示芯片了。于是我们改用MDK开发工具,无论是使用MDK的ICDI调试还是将MDK生成的BIN文件烧制进芯片均无法使屏显示数据。顺便说下,无论是CCS还是MDK生成的BIN文件,烧制进芯片后,其他功能均正常,就是屏无法显示。我们现在就非常奇怪,为什么CCS调试时屏就显示正常,改用MDK调试屏就显示不了呢?在MDK中原来的程序代码没有改,除了启动文件外。再就是CCS调试正常,生成的BIN文件烧制进芯片后,其他的功能正常,显示屏却和MDK调试时一样不能显示了?

我们进一步查找,在MDK调试时,采用断点查看SSI1口寄存器中的数据,发现在进行SSI1口配置时均正常,开始进行数据传递后出现异常,其DR中全部显示0X0000,表示无数据进入,其他寄存器显示数据可以查看附件。从SSI1寄存器的数据显示,很明显出现接收超时和发生溢出。我们就觉得比较奇怪,为什么CCS调试时却不出现这些问题呢?于是我们改用CCS调试,同时监视该SSI1寄存器。我们惊奇的发现,监视的寄存器的数值和MDK监视的数值完全一样。但是下面的屏却显示正常了,包括显示的数据正是我们需要显示的数据。

我们现在不知道怎么办了?你说程序编写错误,那为什么CCS调试的时候却能正常显示,而MDK就不能呢?你说那就用CCS生成的程序烧制吧,但烧进去显示却也不能显示了。

我们后来采用SSI0口,一样出现同样的问题。

这里恳求高手指点一下,小第感激不尽。我们现在已经无法开展下去了。

  • 看看SPI的速率与显示屏的速率是否匹配。

  • 传送速率上不存在问题,继续调试单步运行,监视SSI1寄存器中的数据寄存器,发现本来应该送1024个屏幕数据,这些数据不同,但是监视显示送进寄存器的数据全部为FF,使用的是规定的标准数据函数。查看屏幕数据数组地址中的数据是我需要传的数据,但是为什么实际传的数据却全部变为1024个FF了呢?

  • 如果程序流程方面没有问题,那就有可能是匹配的问题,我的邮箱 teddy-liu@ti.com.

  • 按照你的方法,我们重新进行了配置,现在可以显示了,我们先使用SSI0口,使用标准库函数SSIConfigSetExpClk(),选择参数SSI_FRF_MOTO_MODE_0,1,2,3四种方式,当选择0,2方式时屏幕可以正常显示,但是选择1,3方式时,屏幕不能正常显示。我们一开始选择的是方式3,。我们继续查找,试图发现原因。我们于是又把SSI通道改为1,选择使用SSI1通道,选择参数SSI_FRF_MOTO_MODE_0,1,2,3,奇怪的是无论选择哪个极性,屏幕就是不亮。我们百思不得其解,为什么SSI0的0,2可以,SSI1的0,1,2,3四个都不能呢?