• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

FireBLE串口接收问题

seraph 2016-07-27 浏览量:2045

问题是这样的,我使用demo code,并且没有改任何东西,只是想测试用串口调试助手发送数据
我对demo code的理解是,QN9021收到数据后,透过TX把数据原封不动的传回给串口调试助手,
但是,除了刚上电是打印的 Hello NXP! ,之后发送任何字符串都没有反应


红色框起的部分,程序正在等待数据,led_blink_left为回调,触发后rx_flag会置零

我想解决的就是通过串口中断接收数据,这问题想了好久,在网上也找了很多资料
找到的只有串口发送,并没有接收。。。

下面是源代码,从QBlue中提出来的,如果有就不用下了
1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
其他答案 数量:15
  • 你的理解是对的。
    该例程中就是使用中断来接收数据,
    当收到10个字符时,在中断中调用回调函数,在该函数中会设置rx_flag为1。

    首先确保你的线或者板子上的usb转ttl没问题。

    设置断点调试吧,在中断函数中开始的位置设置断点,jtag连接,进入debug模式运行,用串口助手连续发送字符,看是否能触发并进入中断。uart.c :




    • 发布于2016-07-27
    • 举报
    • 评论 0
    • 1
    • 0

  • 999 发表于 2016-7-27 23:40
    你的理解是对的。
    该例程中就是使用中断来接收数据,
    当收到10个字符时,在中断中调用回调函数,在该函数中 ...

    感觉上没有进入这个中断
    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 你发送了多少个数据啊,要发10个以上试试。
    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 是不是中断,要看你这两个宏定义的是什么值。只有是TRUE时,才会使能了中断。

    CONFIG_UART0_TX_ENABLE_INTERRUPT
    CONFIG_UART0_RX_ENABLE_INTERRUPT
    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 汉云 发表于 2016-7-28 14:02
    是不是中断,要看你这两个宏定义的是什么值。只有是TRUE时,才会使能了中断。

    CONFIG_UART0_TX_ENABLE_INT ...


    数据发送了10个字符,因为是用demo code,所以这些东西都没改

    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • seraph 发表于 2016-7-28 12:08
    感觉上没有进入这个中断

    这不是感觉出来的,单片机这点很方便,直接设置断点调试。若进入中断就会停止。

    你也可以试一下不使用中断接收:

    默认的配置是使用中断的,在uart/src/driver_config.h 中把TRUE改为FALSE,则关闭串口接收中断。使用轮询方法读取串口接收的数据。



    src/dirver/uart.c:
    在该文件中就是用条件编译项来选择是否使用中断。由上边的配置文件配置。



    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • seraph 发表于 2016-7-28 14:43
    数据发送了10个字符,因为是用demo code,所以这些东西都没改

    你在发送的时候再打开发送中断若是发送中断一直有效,会一直进入发送中断,而不无进入到接收中断中。
    你可以使用printf 打印一下两个flag的值 看看。
    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 999 发表于 2016-7-28 14:47
    这不是感觉出来的,单片机这点很方便,直接设置断点调试。若进入中断就会停止。

    你也可以试一下不使用中 ...

    已经确定了,串口调试助手发送时没有进入UART0_RX_IRQHandler
    但是我比较纳闷的是原厂的程序我都没有去改变它的宏定义。。。
    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 汉云 发表于 2016-7-28 15:13
    你在发送的时候再打开发送中断若是发送中断一直有效,会一直进入发送中断,而不无进入到接收中断中。
    你 ...

    串口调试助手发送时没有进入UART0_RX_IRQHandler(接收中断)
    但是我比较纳闷的是原厂的程序我都没有去改变它的宏定义。。。
    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • seraph 发表于 2016-7-28 21:21
    已经确定了,串口调试助手发送时没有进入UART0_RX_IRQHandler
    但是我比较纳闷的是原厂的程序我都没有去改 ...

    你按我上边说的,不用中断试试能不能收到。
    如果能收到,至少说明连线、usb转ttl没问题。
    然后再排查中断设置是否有问题。
    主函数uart_read和 uart_write中,参数不要用10,写个1就行,这样只接收1个字符就会回调函数。
    • 发布于2016-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 楼主别忘了选一个最佳答案哦
    • 发布于2016-07-29
    • 举报
    • 评论 0
    • 0
    • 0

  • seraph 发表于 2016-7-28 21:22
    串口调试助手发送时没有进入UART0_RX_IRQHandler(接收中断)
    但是我比较纳闷的是原厂的程序我都没有去改 ...

    可以先确定硬件上的连接是不是正常完好的。若是程序没有问题,那么 问题就在硬件上了。
    • 发布于2016-07-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 最近也在学习低功耗蓝牙,我用的是TI的芯片。低功耗蓝牙会有一个休眠功能的,此时芯片跑在低频,串口就不能接收了,那就得把休眠功能关系才行,你可以检查一下你的芯片是否有这个功能。
    • 发布于2016-07-29
    • 举报
    • 评论 0
    • 0
    • 0

  • MOP 发表于 2016-8-2 10:46
    那個,您不能用QBlue自帶的工程喔,您只能用FireBLE下載的SDK工程,兩者硬件實現上不同喔,雖然BLE模塊一樣,但 ...

    真相在此啊。
    只分析了软件部分,却忘记了与硬件匹配的问题。
    • 发布于2016-08-02
    • 举报
    • 评论 0
    • 0
    • 0

  • 谢谢大家的解答,最后发现真的如@MOP说的一样
    我原本是在A电脑使用QBlue1.3.7
    A电脑安装不上QBlue1.3.6
    我才去B电脑安装QBlue1.3.6
    在B电脑上进行测试,最终可以实现了
    真的很感谢大家,谢谢
    • 发布于2016-08-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

FireBLE串口接收问题