C 如何在微控制器固件中实现延迟

C 如何在微控制器固件中实现延迟,c,microcontroller,timing,texas-instruments,resolver,C,Microcontroller,Timing,Texas Instruments,Resolver,我正在为德克萨斯仪器公司的TMS320F28335数字信号控制器(DSC)编程,并且正在编写与AD2S1205型分解器的通信(数据表:)。我必须执行“供应顺序和重置”程序,以及通过SPI串行接口读取并发送速度和位置值至DSC的程序。我刚接触固件,有几件事我不知道怎么做: 在分解器数据表(第16页)中,要求您在移动复位信号之前等待电源电压Vdd达到其工作范围。我怎么知道这是什么时候发生的 为了让分解器读取并传输位置和速度信息,我必须遵守时间图(第15页),例如,在输入/RD=0之前,我必须等待/R

我正在为德克萨斯仪器公司的TMS320F28335数字信号控制器(DSC)编程,并且正在编写与AD2S1205型分解器的通信(数据表:)。我必须执行“供应顺序和重置”程序,以及通过SPI串行接口读取并发送速度和位置值至DSC的程序。我刚接触固件,有几件事我不知道怎么做:

  • 在分解器数据表(第16页)中,要求您在移动复位信号之前等待电源电压Vdd达到其工作范围。我怎么知道这是什么时候发生的
  • 为了让分解器读取并传输位置和速度信息,我必须遵守时间图(第15页),例如,在输入/RD=0之前,我必须等待/RDVEL在t4=5 ns内保持稳定。在降低RD的指令之前,我应该在代码中插入什么以确保已通过5ns?我可以将0005传递给DSC上可用的DELAY_US(A)功能(延迟一微秒),但我不知道它是否实际工作,以及这是否是观察设备时序图的正确方法
  • 在“/RD输入”部分(第14页)中规定,当时钟高时,必须发生/RD的高-低转换。当时钟处于高位时,如何确保降低/RD的代码行正在运行
  • 通过分配器将芯片Vdd连接到ADC端口。当Vdd正确时重置芯片
  • 你的uC是150MHz。时钟周期为6.67ns,大于所需的4ns。无论你做什么,你都不能更快地换别针。这个问题对你来说并不存在
  • 将CLKIN连接到输入引脚。投票表决。时钟高时更改/RD

  • 你是否排除硬件可能是答案?例如,外部连接的电路可能必须设计为确保“3”前提条件。我投票结束这个问题,因为所有问题都纯粹/主要是硬件问题。另外,对于2。有时一条简单的NOP指令就可以了。@WeatherVane甚至不需要NOP:)。问题是OP甚至没有尝试分析数据表中的数据。是的,我的意思是在一般情况下,NOP通常就足够了。好的,谢谢。2.正如您在数据表中所看到的,需要其他延迟,其中一些延迟大于6.67 ns的时钟周期,如t_轨道或t9(分别为20 ms和30 ns)。3.好的,但是当时钟高的时候/RD必须改变,我不能改变/RD然后时钟高(就像你说的)。我能做的是在SCLK高的时候轮询SCLK和lower/RD,但我怎么知道在执行轮询指令和降低/RD的指令之间经过的时间内,时钟没有变低?因为您要等到看到从低到高的转换。