信号状态的检测方法和装置的制造方法_3

文档序号:9200333阅读:来源:国知局
插拔检测的标志位为1时,计算低脉冲宽度并停止定时器包括:获取 计算得到的低脉冲宽度。判断低脉冲宽度是否处于预设范围。如果低脉冲宽度处于预设范 围,则确定待检测信号为中断请求热插拔检测信号。如果低脉冲宽度小于预设范围,则确定 待检测信号为干扰负脉冲。
[0057] 如图4 (c)所示,下降沿触发捕获中断时,触发2ms定时器,上升沿再次触发捕获中 断时,计算低脉冲宽度并停止计时。设触发2ms定时器时的初始时间为t0,上升沿触发捕获 中断时值为tl,则tl-tO =低脉冲宽度值,单位为机器周期。
[0058] 通过上述实施例,可以根据单片机的捕获中断和溢出中断两种中断状态,以及输 入管脚的状态和HPD的标志位来确定待检测信号的信号状态,并及时输出检测结果,从而 解决了现有技术检测热插拔检测信号的信号状态过程复杂且成本高问题,达到了及时准确 检测信号状态,并且无需增加硬件就能实现,降低了检测成本的同时提高了检测效率。
[0059] 以下以Silicon Lab单片机C8051F321为例说明【具体实施方式】。该单片机具有5 个PCA通道,选择0通道并将其映射到PO. 2 口。其PCA中断服务向量为0x5B,对应中断服 务号为11。
[0060] 定义两个位全局变量g_b HPD和g_b IRQ_HPD分别保存HPD和IRQ_HPD的状态, 用于传递Hro信号供其他模块处理使用。定义PCAISR中断服务函数,其中断向量号为11, 用于实时检测并更新HPD信号的状态。
[0061] 为了避免在执行中断服务程序过程中,由于Hro信号发生干扰变化而导致错误判 断,中断服务程序的第一个操作就读入PCA管脚的状态。考虑到当脉冲宽度非常接近于且 小于2ms时,在判断过程中可能触发溢出中断,为了避免重复判断,清零溢出中断标志位。 每当判断结束时都停止PCA定时器,每当HH)信号有新的变化时都装入2ms定时初值并启 动PCA定时器。
[0062]



[0066] 本发明实施例还提供了一种信号状态的检测装置。图5是根据本发明实施例的信 号状态的检测装置的示意图。如图5所示,该信号状态的检测装置通过单片机的可编程计 数器阵列检测信号状态,包括:接收单元10、检测单元20、确定单元30和输出单元40。
[0067] 接收单元10用于接收待检测信号。如图1所示,单片机与DP连接器相连接,能接 收DP连接器的HPD (热插拔检测)信号,HH)信号即待检测信号。
[0068] 检测单元20用于检测可编程计数器阵列的捕获中断、溢出中断和可编程计数器 阵列的通道的输入管脚状态。单片机的可编程计数器阵列具有捕获中断和溢出中断两种中 断操作,仅占用一个硬件可编程计数器阵列的通道的条件下完成HH)信号的检测。捕获中 断为检测到信号的上升沿或者下降沿,溢出中断为检测到信号持续处于高电平或者低电平 的时间超过预设值。例如,在本实施例中检测到待检测信号的上升沿则为捕获中断,检测到 待检测信号持续处于高电平的时间超过2ms则为溢出中断。在单片机上电复位后,单片机 程序将HH)标志位清零并初始化可编程计数器阵列如下:
[0069] 16位软件定时器模式;上升沿和下降沿同时捕获模式;使能捕获中断和溢出中 断;定时器初值为2ms ;启动可编程计数器阵列的定时器。
[0070] 确定单元30用于根据检测到的捕获中断、检测到的溢出中断和输入管脚状态确 定待检测信号的信号状态。
[0071] 输出单元40用于实时输出信号状态。
[0072] 通过上述实施例,利用单片机中的可编程计数器阵列的捕获中断和溢出中断两种 中断操作来检测待检测信号的上升沿、下降沿和溢出状态,并根据检测到捕获中断、溢出中 断和输入管脚状态来确定信号状态,从而实现了利用单片机中可编程计数器本身的中断操 作,以及在仅占用一个硬件可编程计数器阵列通道的条件下完成Hro信号的检测,无需另 外设置检测电路,也就解决了现有技术检测热插拔检测信号的信号状态过程复杂且成本高 问题,达到了采用软件检测热插拔检测信号的信号状态的效果。
[0073] 本实施例可以根据检测到的可编程计数器阵列捕获中断、溢出中断和输入管脚状 态确定待检测信号的信号状态可以如表1所示。
[0074] 可选地,确定单元包括:第一确定子单元,用于在单片机处于溢出中断时,根据输 入管脚状态确定待检测信号的信号状态,其中:在检测到输入管脚状态为高电平时,确定待 检测信号处于热插拔检测信号的高电平信号状态。在检测到输入管脚状态为低电平时,确 定待检测信号处于热插拔检测信号的低电平信号状态。
[0075] 本实施例中,单片机处于溢出中断时即检测到待检测信号持续处于高电平或者低 电平的时间超过2ms。图3(a)和图3(b)分别示出了低电平和高电平的溢出中断,图3(a) 示出的输入管脚状态为低,结合表1可知,此时待检测信号的信号状态为HPD_Low,即HPD_ 低;图3(b)示出的输入管脚状态为高,结合表1可知,此时待检测信号的信号状态为HPD_ High,即 HPD_ 高。
[0076] 可选地,中断请求的热插拔检测信号出现在图1所示的单片机和DP连接器建立 连接后,即在出现溢出中断(CF = 1)后,检测到捕获中断(CCF = 1)后才能够检测到中断 请求的热插拔检测信号,因此,在溢出中断时停止可编程计数器阵列的定时器。同时,由于 中断请求的热插拔检测信号的定义为从下降沿到上升沿之间的低脉冲宽度介于250 μ s到 2ms之间,因此,为了检测中断请求的热插拔检测信号,在输入管脚状态为高电平时,该装置 还包括:置位子单元,用于在检测到输入管脚状态为高电平时,置位热插拔检测的标志位, 并且停止可编程计数器阵列的定时器。清零子单元,用于在检测到输入管脚状态为低电平 时,清零热插拔检测的标志位,并且停止可编程计数器阵列。置位热插拔检测的标志位后可 以检测中断请求的热插拔检测信号,在清零热插拔检测的标志位后无需再判断捕获中断是 否为中断请求的热插拔检测信号。
[0077] 可选地,确定单元包括:获取子单元,用于在单片机处于捕获中断时,获取热插拔 检测的标志位。第二确定子单元,用于根据输入管脚状态和热插拔检测的标志位确定待检 测信号的信号状态。
[0078] 由于在热插拔检测的标志位被置位后才会检测到中断请求的热插拔检测信号,根 据输入管脚状态来判断捕获中断是由上升沿带来的还是下降沿带来的,并根据检测到的上 升沿、下降沿和输入管脚的状态来确定待检测信号的信号状态。
[0079] 具体地,第二确定子单元包括:计算模块,用于在输入管脚状态为高电平时,判断 热插拔检测的标志位为〇或者1,其中,在热插拔检测的标志位为〇时,启动可编程计数器阵 列的定时器,在热插拔检测的标志位为1时,计算低脉冲宽度并停止定时器。确定模块,用 于在输入管脚状态为低电平时,判断热插拔检测的标志位为O或者1,其中,在热插拔检测 的标志位为O时,确定待检测信号为干扰正脉冲,在热插拔检测的标志位为1时,启动定时 器。
[0080] 如图4(a)所示,热插拔检测的标志位为0,输入管脚状态为高电平,则为上升沿触 发中断,启动可编程计数器阵列的定时器进行2ms定时,由图4(a)可知定时器的计时时间 小于2ms,并且在2ms的时间内输入管脚状态跳转为低电平,根据表1可知待检测信号为干 扰正脉冲,并在检测到下降沿触发中断时停止定时器的定时。
[0081] 如图4(b)所示,热插拔检测的标志位为0,输入管脚状态为低电平,则为下降沿触 发中断,根据表1可知此时待检测信号为干扰脉冲信号,在检测到上升沿触发的中断时,启 动可编程计数器阵列的定时器进行2ms定时,在超过2ms后置位Hro标志位为1。在HPD 标志位为1时,再次检测到下降沿并触发捕获中断,如图4(c)所示,根据表1可知,下降沿 触发捕获中断且HH)标志位为1时,启动2ms的定时器,在检测到上升沿触发的捕获中断时 计算从下降沿到上升沿之间的低脉冲宽度介于250 μ s到2ms之间,则确定此时待检测信号 为中断请求的热插拔检测信号。如果在检测到上升沿触发的捕获中断时计算从下降沿到上 升沿之间的低脉冲宽度小于250 μ s时,如图(d)所示,确定此时待检测信号为干扰负脉冲。 如图4(e)所示,如果下降沿触发捕获中断且HH)标志位为1时,启动2ms的定时器后,在超 过2ms的时间内没有检测到上升沿触发的捕获中断,则将触发溢出中断,与图3 (a)的情况 类似,根据表1可以判断为HPD_low,此时需要清零HH)标志位。
[0082] 为了避免由于HH)信号发生干扰变化而导致错误判断,可编程计数器阵列的第一 个操作就读入可编程计数器阵列的管脚的状态。当脉冲宽度非常接近且小于2ms时,可能 会触发溢出中断,为了避免重复判断,清零溢出中断标志位。每当判断结束时都停止定时 器,每当HH)信号有新的变化时都装入2ms定时初值并启动可编程计数器阵列的定时器。
[0083] 可选地,计算模块包括:获取子模块,用于获取计算得到的低脉冲宽度。判断子模 块,用于判断低脉冲宽度是否处于预设范围。第一确定子模块,用于在低脉冲宽度
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1