查看: 56658
回复: 144
参赛作品《J-LINK无线仿真器》
小梁电子
2
主题
118
回复
发表于2018-05-20 12:59:26 | 显示全部楼层
1# 电梯直达

【报名阶段需要填写的内容】


1. 参赛者姓名(必填项):

酒天聊

2. 单位或学校名称(选填项):

深圳云迪尔

3. 当前职务或职称(选填项):

游动工程师

4. 参赛作品的名字(必填项):

J-LINK无线仿真器

5. 简要陈述您的idea和作品(必填项):

作为一名软硬件工程师,经常需要编写代码并烧录到单片机上进行实时仿真,这时候我们都会用到J-LINK或者ST-LINK等仿真器。市面上的这些仿真器都是有线方式,在调试过程中偶尔会遇到如下情况:

a.电脑离设备端太远了,需要延迟仿真器接线,造成仿真烧录不稳定,丢包率高;

b.电脑端与设备端需要隔离,普通仿真器无法解决问题;

c.手持式嵌入式,需要拿到手上玩转调试,又希望能够实时监控查找问题,此时有线仿真器接头松动容易造成在线仿真掉线;

为了解决这么问题,并且能够给后续工作更加得心应手,我萌发了打造自己的J-LINK无线仿真器念头,借着这次官方活动,正好顺路,省些费用。


6. 拟用到的立创商城在售物料(必填项):

a.LPC11U14或者STM32F103C8T6吧,便宜,而且都带USB接口;
b.采用高速无线模块,先暂拟采用NF-01-S模块;

7. 拟用到的非立创商城物料或其它补充(必填项):

暂时不需要,实际操作中想到了再添加。

8. 拟用到的EDA工具软件名称(必填项):

不熟悉立创的EDA工具,还是用熟悉的AD9吧。


【作品正式发表(报名成功后进入设计阶段)需要填写的内容】


一、作品简介

例如,可以包括但不局限于以下内容:

1.作品的整机外观图片或焊接组装好的PCBA图片;

 点击查看大图

                                                                  背面图                                                                                                                      正面图

2.作品的研究背景、目的和功能、市场应用前景;

          项目初衷是打算在SEGGER公司的JLINK上做无线仿真器,但是随着项目的开展进行,发现参赛时间仓促,无法继续进行,进而转向开源的CMSIS-DAP。CMSIS-DAP是ARM公司推出的面向ARM Cortex系列MCU的开源免费调试器,它可以同时兼容SWD和JTAG方式调试,目前已经被Keil MDK,IAR EWARM等IDE支持,市面上很多主流的MCU,例如STM32,NXP LPC,Freescale等,均完美支持。市场上用CMSIS-DAP做有线仿真器的已经很多,淘宝上都可以买得到,但是用做无线仿真器的基本上没有,毕竟做起来还是有些难度。本作品基于官方CMSIS-DAP开源代码,采用nRF24L01 无线2.4G芯片尝试做无线仿真调试器,实现一定距离内的设备无线方式的在线调试仿真。

3.作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现?

          本作品最大的创新点是将传统有线方式的仿真器扩展为无线方式,由此可以实现无线下载,设备仿真,特别是对于有强电,强干扰的环境,或者有线距离方式无法延伸的环境。


二、系统构架图

用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。

 点击查看大图


三、硬件部分的描述

1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的;

   原理图一共有2份,LPC11U37跟STM32F103C8t6,其中LPC11U37已经调试通过,其如下:

 点击查看大图


  同时也给出STM32F103C8T6的原理图:

 点击查看大图

    连片PCB实物图:

     点击查看大图

                                     正面                                                                                                                                   背面

  备注: LPC11U37与STM32F103C8T6均连带LPC1114小板(后续拟接收端用LPC1114进行调试)。

 连片调试图,千辛万苦,应该不要忘记连片调试的样子:

 


   切割后的成品实物图:

点击查看大图

2.4G模块采用的是成都亿百特的E01-ML01S 模块,后续即将更换成E01-ML01SP2模块, 效果图如下:

                           E01-ML01S 模块(不带PA)                                                                                                   E01-ML01SP2(LA+LNA

                                       

  

2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。

    先贴一张工作状态图,配合该图来讲解:

    点击查看大图

    节点A为发射端,节点B为接收端,节点A程序含有USB+CMSIS-DAP +RF功能,节点B程序含有CMSIS-DAP执行功能,仿真设备为仿真目标,这里已STM32F103C8T6板子举例。节点A供电取至PC电脑,节点B供电我取至华为荣耀盒子。

  系统工作过程:

   1)节点A通过USB接入PC电脑,并被电脑识别;

           2)IDE软件选择CMSIS-DAP仿真,并执行仿真,此时IDE软件将HID数据发送至节点A,节点A收到数据后,通过2.4G无线方式打包,一次性传输96字节到节点B(网上找的代码都是32字节,我的是96字节,具体请详细阅读nRF24L01手册,你也可以实现的),并配置为接收状态;

           3)节点B收到数据后,解析,并执行CMSIS-DAP的SWD代码,对仿真设备进行数据读取或者写入;

           4)节点B将处理数据通过2.4G返回给节点A,并立即配置为接收状态;

           5)节点A将数据回传给IDE;

          6)如此反复执行。


3.注明所用到的EDA工具软件名称并附上设计链接。

   本次设计使用的是AD9软件进行画图。


四、材料清单(BOM列表)

列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。

如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。

1)  LPC11U37FBD64/501                连接:https://item.szlcsc.com/196360.html

2)   STM32F103C8T6                         连接:https://item.szlcsc.com/9243.html

3)  2.4G模块E01-ML01S                     连接:https://item.szlcsc.com/109765.html

4)    MIC5219-3.3V稳压芯片              连接:https://item.szlcsc.com/30367.html


五、软件部分的描述(选填)

如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。

(请大家留下邮箱,我会逐个发给大家资料,资料包括源码、PCB、原理图,代码编译环境是IAR,原理图是AD9画的

工作流程:

 

nRF24L01关键点讲解:

英文手册:nRF24L01_en.pdf 

芯片发送与接收模式的配置,均需要延迟130us,等到PLL的启动过程:

 点击查看大图

nRF24L01接收方式比较简单,这里采用查询方式进行读取数据,不用中断方式:


unsigned int RfGetDataFromTxFIFO(void)
{
unsigned int DataCount = 0;
unsigned int Size;

  while(1)
  {
      if(NrfGetFifoStatus() & RX_FIFO_EMPTY) return DataCount;
                  
      //RF24L_CE_L();

      StartGardTxTimer(RAND_GARD_TIME);
      
      RfRxBuffer.Start = 0;
      
      RfRxBuffer.End =  NrfGetRxSize();
      DataCount += RfRxBuffer.End;
      
      NrfReadFifo(RfRxBuffer.Data,RfRxBuffer.End);
      
      NrfClearInt(RX_DR);

      /*反馈给用户*/
      RfGetData(RfRxBuffer.Data,RfRxBuffer.End);
      
      //RF24L_CE_H();      
  }
}
中断的处理时针对发送模式,注意“It is important never to keep the nRF24L01+ in TX mode for more than 4ms at a time.”,单次发送数据,先写入FIFO TX数据,数据最大可以写入96字节,写入完成后,将芯片从Standby 1切入TX模式,即可实现数据的传输:


void StartTx(void)
{
  RF24L_CE_L();

  NrfMode(TX_MODE);

  NrfClearInt(MAX_RT | TX_DS);
  NrfUnmaskInt(MAX_RT | TX_DS);

  RF24L_CE_H();
  //for(volatile unsigned char j = NRF_TX_PULSE_DLY; j; j--);
  delay32Us(130);
  if(NrfGetFifoStatus() & TX_FIFO_EMPTY){/*已经发送完数据,此时应该回到模式1*/
      RF24L_CE_L();
  }
}


写入FOFI TX参考代码:


void RfPutDataToTxFIFO(void)
{
    unsigned int Size;
    unsigned int DataSize = 0;
    
    while(((NrfGetFifoStatus() & TX_FIFO_FULL) == 0) && (gRF_TxBuf.End != gRF_TxBuf.Start)){/*填充,直到FIFO缓冲区已满*/
        DataSize = gRF_TxBuf.End - gRF_TxBuf.Start;
        Size = MIN(32, DataSize);
        NrfWriteFifo(gRF_TxBuf.Data+gRF_TxBuf.Start ,Size);
        gRF_TxBuf.Start += Size;
    }
}


nRF24L01切换到TX或RX需要130us,这时候如果处于RX模式,芯片方才开始接收检测空中数据!!


六、作品演示

请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得10分,具体详见活动规则。

1.2Mbps速率,0dBm,近距离下,使用CoFlash烧录,然后用IAR直接仿真;

https://v.qq.com/x/page/j0751wuk36n.html

2.2米外演示,nRF24L01丢包大(2Mbps速率,0dBm,),估测与无线模块的板载天线有关系,更换外接天线应该会更好,或者用“leiyitan”网友的方案,他有提到用蓝牙3.0spp协议做一个,100米距离,115200波特率全双工对发都不会有丝毫压力,这一点速度比24xx快多了,3.0的蓝牙如果再加PA,可以搞一两百米左右。也给大家参考下丢包的视频,失败是成功之母,让想做无线仿真器的朋友少走弯路:

https://v.qq.com/x/page/p0751ounrbl.html

3.速率调整为250kbps,测试3米远距离,烧录,仿真无压力,但是烧录速度明显比2Mbps速率慢。改天再测试下7米距离。



七、总结

例如您在完成该作品过程中的一些体会、碰到的技术问题或调试经验、作品的未来规划,及对我们主办方的建议和意见等。

1.这作品前后竟然花了1个多月,且都是挤出业余时间来实现,打样板做了两次,至此方才实现无线仿真,但是不知真正意义上的JLINK,作品现在是用CMSIS-DAP来实现的,这是一点遗憾!!!

2.至今采用的2.4G模块未带PA,缺点是距离不够,丢包率大,现已下单购买带PA的nRF24L01+模块,预计替换后距离跟体验会上一个台阶。

3.作品结尾,对于做JLINK有了思路,而且比较清晰,但是临近作品结题了,已经没有时间在开展,等着下次吧。

4.这个作品最大的亮点是提出并初步实现了无线仿真,展望未来远距离调试产品,隔墙在线仿真等调试手段将不再是梦。

5.最后感谢立创商城给予这次活动机会,祝愿立创商城越办越好,下一届电子制作节奖金越来越高~~~~~~~~



沈洁kokoro
2
主题
127
回复
发表于2018-08-07 16:03:24   |  显示全部楼层
49#
发表于2018-08-07 08:31:57  47# 初步版本已经调通,但是丢帧厉害,这几天还想搞搞2.4G优化的事情,思路也已经有了,但是缺少的是时间。晚上先更新1楼内容,...
无线很容易丢帧的,所以最好上tcp协议,但是上了tcp协议,就传输速度就厉害了。还有一种做法就是做fifo,就是tcp+fifo,否则想实现你的功能,挺困难的。tcp解决数据传输可能错误的问题。fifo解决丢帧导致的时序不一致问题。简而言之无线仿真困难众多
沈洁kokoro
2
主题
127
回复
发表于2018-08-07 16:09:00   |  显示全部楼层
50#
发表于2018-08-04 16:20:48  43# 安装了IARforarm7.5(8.22的太差劲了,卸载不用行不!!),尝试了几次,问题还是有的,有的时候可以正常下载,...

单片机需要有屏蔽罩子,而且需要控制单片机频率,单片机可能对无线通讯有干扰,整个无线通讯并不是这么容易搞定的啊



主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部