主题中讨论的其他器件:冲击
研究员,
下面的代码通过 SPI 端口读取两组连续的32位、其中 CSB 由 GPIO 控制、时钟设置为7.5MHz。 需要11.44us。 Tivaware 函数编译到闪存、无优化。
IntMasterDisable(); GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、0);//降低 CSB SSIDataPut (gyroHW->SSIBase、frameHigh);//仅发送高16位 while (SSIBusy (gyroHW->SSIBase));//清零前16位 SSIDataGet (gyrohw->SSIBase、readCrap);//读取无用数据 SSIDataPut (gyroHW->SSIBase、(frameLow));//这会发送其他16位 while (SSIBusy (gyroHW->SSIBase));//刷新第二个16位 GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、gyroHW->GPIOFSSPin);//提升 CSB SSIDataGet (gyrohw->SSIBase、readCrap);//读取无用数据 GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、0);//降低 CSB SSIDataPut (gyroHW->SSIBase、frameHigh);//刷新第三个16位 while (SSIBusy (gyroHW->SSIBase));//等待位被清空 SSIDataGet (gyroHW->SSIBase、read16High);//读取16位 SSIDataPut (gyroHW->SSIBase、frameLow);//刷新最后16位 while (SSIBusy (gyroHW->SSIBase));//等待位被清空 SSIDataGet (gyrohw->SSIBase、read16Low);//读取更多数据 GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、gyroHW->GPIOFSSPin);//提升 CSB IntMasterEnable();
而具有直接从 ROM 调用的所有 API 的确切版本需要12.22us。
IntMasterDisable(); ROM_GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、0);//降低 CSB ROM_SSIDataPut (gyroHW->SSIBase、frameHigh);//仅发送高16位 while (ROM_SSIBusy (gyroHW->SSIBase));//刷新前16位 ROM_SSIDataGet (gyroHW->SSIBase、readCrap);//读取无用数据 ROM_SSIDataPut (gyroHW->SSIBase、(frameLow));//这会发送其他16位 while (ROM_SSIBusy (gyroHW->SSIBase));//刷新第二个16位 ROM_GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、gyroHW->GPIOFSSPin);//提升 CSB ROM_SSIDataGet (gyroHW->SSIBase、readCrap);//读取无用数据 ROM_GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、0);//降低 CSB ROM_SSIDataPut (gyroHW->SSIBase、frameHigh);//刷新第三个16位 while (ROM_SSIBusy (gyroHW->SSIBase));//等待位被清空 ROM_SSIDataGet (gyroHW->SSIBase、&read16High);//读取16位 ROM_SSIDataPut (gyroHW->SSIBase、frameLow);//刷新最后16位 while (ROM_SSIBusy (gyroHW->SSIBase));//等待位被清空 ROM_SSIDataGet (gyroHW->SSIBase、read16Low);//读取更多数据 ROM_GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、gyroHW->GPIOFSSPin);//提升 CSB IntMasterEnable();
不是这样会使任何人丧生、而是所有迄今为止的讨论和文档都意味着 ROM 调用速度更快。 是否有任何想法作为上述结果的原因?
此致
布鲁诺