UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Visitor westbrook
Visitor
573 次查看
注册日期: ‎10-02-2018

如何使用UART来实现中断

目前希望使用Arty-z7 开发板来实现功能如下:

  • 在开关“00”状态下,灯不亮,在“terminal”中无法输入文字;
  • 在开关“11”状态下,灯亮,在“terminal”输入栏中输入一串字符,能够通过UART传回(简单的串口通信)。
  • 而且希望实现开关的状态(“00”,“01”)可以实时控制能否输入文字,所以目前的可行办法似乎只有使用UART和中断.

另外还有一个问题:

  • 如何能实现在terminal中有文字输入的时候立刻自动调入中断?

目前没找到相关教程,往大家指点一番,感激不尽!附上:我的模块图

  • 2019-02-12.png

 

0 项奖励
3 条回复3
Xilinx Employee
Xilinx Employee
540 次查看
注册日期: ‎09-14-2018

回复: 如何使用UART来实现中断

hi @westbrook

uart本身有中断的,sdk中也有example (xuartps_intr_example,可以从bsp中import)。不知道你要的是不是这个,还是有什么别的需求?

 

----------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
----------------------------------------------------------------------------------------------

0 项奖励
Xilinx Employee
Xilinx Employee
535 次查看
注册日期: ‎06-02-2017

回复: 如何使用UART来实现中断

Hi @westbrook

按照你的需求描述,其实我认为直接在C code中编写代码也可以完成相应的要求。

这里回答一下如何使用UART中断。

1. 首先需要在ZYNQ配置中使能中断

2. 将axi_uartlite的interrput信号连接到ZYNQ的IRQ_F2P信号

这样生成bit导入到sdk中生成的bsp会自动包含uart中断所需要的信息,包括中断号等等。这时在bsp uart的example code中会有中断的例程,代码可以参考。

 

-------------------------------------------------------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
--------------------------------------------------------------------------------------------------------------------------------------------
enable_interrupt.JPG
connect_interrput.JPG
0 项奖励
Xilinx Employee
Xilinx Employee
522 次查看
注册日期: ‎03-27-2013

回复: 如何使用UART来实现中断

Hi Westbrook,

Arty-z7看起来不像是Xilinx的开发板,不过从设计来看是个Zynq的板子。感觉你的问题更像一个设计问题。

这里只能提供些文档和例子希望对你有用。

没有看到你使用了什么操作系统,就默认用的是Standalone的程序。可以参考下UG1165一类的实验文档

https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_3/ug1165-zynq-embedded-design-tutorial.pdf

用你目前的设计,简单地实现,可以分成两部分做:

1. 实现terminal中输入字符,判断输出字符的功能,最简单的直接用C的标准输入输出比如printf和scanf,具体使用可以在互联网上找。不过要注意Zynq的板子默认会有PS uart,要在BSP设置中设置正确的stdin/stdout。如果你要单独使用uartlite,不做C的标准输入输出,可能要根据代码单独改了,以下是uartlite的参考代码:

C:\Xilinx\SDK\2018.2\data\embeddedsw\XilinxProcessorIPLib\drivers\uartlite_v3_2\examples

 

2. 实现GPIO的状态读,并在你前面1实现的代码中加入判断,决定后续是否输出或者输出什么,参考代码C:\Xilinx\SDK\2018.2\data\embeddedsw\XilinxProcessorIPLib\drivers\gpio_v4_3\examples

你的设计中没有看到中断连接到Zynq上,如果要使用的话,需要连接起来,可以参考前面提到的UG1165

 

怎么设计代码和调试的问题还需要自己解决下,祝好运

Best Regards,
Jason
-----------------------------------------------------------------------------------------------
Please mark the Answer as "Accept as solution" if the information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
-----------------------------------------------------------------------------------------------