工具/软件:Code Composer Studio
您好!
首先、我要说 的是、我是 TM4C123G Launchpad 的新手、仍然是 C 编码的初学者。 我是一名大学生、刚刚完成了使用 PIC 微控制器的课程。 我将 TM4C123G (在 CCS 中进行编程)用于我的高级项目、这感觉与使用 MPLAB 和 PICS 有了巨大的飞跃。 我已经阅读了数据表中有关 SSI 的所有内容、并从 Tiva C 库中的 SSI.C 函数中了解了我可以获得的内容、但我确实有一些问题、我找不到答案:
在向 SSI 数据寄存器写入/读取数据时、SSI 模块是否自动执行飞思卡尔 SPI 格式(时钟、SSInFss、Rx、Tx)? 对于 PIC、我必须手动设置芯片选择并发送虚拟字节、以便在读取数据时保持时钟运行。 从我在 Tiva 数据表中看到的内容来看、 TM4C123G 似乎为我完成了所有这些工作。
2.对于我的项目,我需要接收大量字节的连续数据。 可能高达64字节、这对我来说很重要、因为我在 PIC 课程中连续传输/读取的最大数据大约为2-3字节。 我对 SSI 的理解是、我只需发送数据、其中包括地址、R/W 和从从从器件读取数据的命令、然后从数据寄存器读取接收到的数据。 假设这是正确的、如果我需要接收连续数据、我是否只需背靠背地从数据寄存器读取数据?
例如、在我的项目中、我需要使用 SPI 与 USB 主机控制器(VDIP1)进行通信。 我必须发送3个单独的传输、以告诉它发回固件版本等信息。 然后、它会向我发送大量数据流。 (在我当前的技能水平下、我经常考虑一句数据)。 如何连续读取? 在 VDIP1完成发送之前、我可以在环路上或背靠背使用 SSIDataGet 函数吗? 例如、以下代码能否正常工作? (假设 SSI 模块已正确配置并启用。 忽略语法问题、因为这只是代码的一个假设性部分)我只想知道我是否走上了正确的轨道。
//这些只是任意值。 假设这是我需要发送到主机控制器以读取数据的三个值。
SSIDataPut (SSI0_BASE、0x9F);
SSIDataPut (SSI0_BASE、0x9F);
SSIDataPut (SSI0_BASE、0x9F);
//I 稍后将确定 while 环路。 我还没有考虑如何检查我是否已经接收到数据。
while (<b)
{
SSIDataGet (SSI0_BASE、 * pu32Data);
*pui32Data ++;
A++;
}
3.如果我做了上述的事情,我是否能够读取连续的数据流? SSI 模块是否自动对 SSInFss 进行脉冲。 如果我这么做、时钟会继续运行吗?
我感谢您的任何回答。 不过,我想请你尽可能地把它倒在我身上。 仍然学习有关微控制器和 C 代码的大量技术语言。
