SCI通信的时候,我通常用中断的方式接受数据,但是这样会打断主程序的运行,我想问下有没有不用中断就能接受数据,且不会打扰主程序的运行,请问有什么方法?
谢谢!
Forrest:
这个没有办法,芯片指令是顺序运行,不像FPGA那样是并行。
或者您算好时间,在主程序中进行查询接收数据。又或者让SCI中断优先级最低,可以被其他中断嵌套,以便不影响主程序的运行。
SCI通信的时候,我通常用中断的方式接受数据,但是这样会打断主程序的运行,我想问下有没有不用中断就能接受数据,且不会打扰主程序的运行,请问有什么方法?
谢谢!
Troublemaker:
回复 Forrest:
请教Forrest,能否不需要借助中断,一次性往FIFO中传输16个字节的数,CPU从FIFO中提出16个字节的数呢?谢谢!
SCI通信的时候,我通常用中断的方式接受数据,但是这样会打断主程序的运行,我想问下有没有不用中断就能接受数据,且不会打扰主程序的运行,请问有什么方法?
谢谢!
Forrest:
回复 Troublemaker:
可以不借助中断,您可以参考一下SCI例程,用查询方式4个数据一次接收。
至于“一次性往FIFO中传输16个字节的数,CPU从FIFO中提出16个字节的数”
老的C2000芯片SCI有16级FIFO,我记得您用的是28027,他只有4级深。
SCI通信的时候,我通常用中断的方式接受数据,但是这样会打断主程序的运行,我想问下有没有不用中断就能接受数据,且不会打扰主程序的运行,请问有什么方法?
谢谢!
Troublemaker:
回复 Forrest:
我现在用的是28335,换掉了。可以利用这个16级的FIFO实现一次性传输16个字节的数据吗?谢谢!
请推荐相关的历程!
SCI通信的时候,我通常用中断的方式接受数据,但是这样会打断主程序的运行,我想问下有没有不用中断就能接受数据,且不会打扰主程序的运行,请问有什么方法?
谢谢!
Troublemaker:
回复 Troublemaker:
接受数据的话,采用FIFO的话,从SCI 接收管脚经过移位寄存器,应该是直接移到FIFO缓存里吧。如果知道FIFO16个缓存的地址,就可以直接把16个数据给读到CPU里了。