×

粒子氙Arduino转换(Feather nRF52840 Express)

消耗积分:0 | 格式:zip | 大小:0.20 MB | 2023-01-31

张霞

分享资料个

描述

MCU涨价!

如今 (2022-23),微控制器变得非常昂贵。现在是拿出那些尘土飞扬的 Particle Xenon 板(由 Particle IoT 停产)并将它们转换为在 Arduino 中进行编程的好时机

感谢 Adafruit 为 nRF52840 Feather Express 板提供引导加载程序的辛勤工作,它使用与 Particle Xenon 相同的处理器。

需要的东西

  • 1. 粒子氙气板
  • 2. SWD/JTAG编程器或调试器
  • 3. OpenOCD(下附)
  • 4. Bootloader(下附)

如何转换(适用于 Windows)

第 1 步:准备好文件

下载下面附带的 Open OCD 和 Bootloader 文件夹,并将它们解压缩到 C:/ 驱动器中。您可以选择其他位置,但您需要相应地提供路径

poYBAGPXV9-AeoO7AAIY0f3AmEA685.jpg
 

另外,添加环境变量的路径

Windows key >> (type 'path') System Properties >> Environment Variables >>New >>

(in Edit user value) add path:

C:\openocd-0.10.0\bin
poYBAGPXV-2AVdpLAALmYvh10xU365.png
 

第 2 步:连接硬件

将 Particle Xenon 板连接到 SDW 编程器,将编程器连接到 PC USB 端口。大多数 Jlink/Daplink/Segger 程序员应该可以工作!

pYYBAGPXWAeAHCNnAAbPTYrRwUU302.jpg
 

第三步:烧录Bootloader

下一部分在命令提示符中完成,通过按 Windows 键并键入 cmd 打开命令提示符

(选择并复制以下命令,使用键盘的Ctrl + V键粘贴然后按Enter键在命令提示符下执行)

接下来使用以下命令将目录更改为 OpenOCD 位置

cd C:\openocd-0.10.0\bin\

然后通过以下命令刷新引导加载程序:

openocd -f C:/openocd-0.10.0/scripts/interface/cmsis-dap.cfg -f C:/openocd-0.10.0/scripts/target/nrf52.cfg -c "adapter_khz 1000" -c "transport select swd" -c "init" -c "soft_reset_halt" -c "nrf52 mass_erase" -c "flash write_image C:/nrf52840.hex" -c "reset" -c "exit"
pYYBAGPXWAqAFJfRAADS-KyNcVE586.png
 

如果一切顺利,您会看到 Jlink/Daplink/Segger 编程器在将 hex 文件烧录到粒子氙气中时开始闪烁,命令提示符将显示引导加载程序的进度,并闪烁不同的消息。烧录bootloader大约需要20-30秒

转换后引脚映射变化

我通过阅读 Particle Xenon 和 Feather Express 板的原理图绘制了这些引出线。然后,眨眼检查了每个引脚,它们都工作正常。所有标有 x 的引脚都不能直接使用,因为它们没有映射(查看威廉希尔官方网站 板原理图以了解更多信息)。但是,可以将它们与低级代码一起使用(未测试)

poYBAGPXWA2AA18LAAGoYwRNP3c606.jpg
引脚名称映射
 

使用 Arduino IDE 编程

现在,Particle Xenon 可以像任何常规 Arduino 板一样通过 USB 进行编程。

使用 USB 电缆将其直接连接到 PC USB 并且应该出现一个新的 com 端口(这个 com 端口号因 PC 不同而不同,最好在插入之前查看 Arduino IDE 中可用的 com 端口,以便您可以识别新的 com 端口)

pYYBAGPXWByAV0D_AAO_lniO48A065.jpg
 

从 Arduino IDE 中选择 Adafruit Feather Express

poYBAGPXWB-AbM76AAIvrdX2z0g814.png
 

尝试编译并闪烁下面附带的 RGB blinky。

After the very first programming, the com port will change again but this time it will show the board name as Adafruit Feather nRF52840 Express, which means Arduino IDE will detect the board automatically onwards whenever connected.

pYYBAGPXWCKARSTtAAF3wobkgeY470.png
 

编程 RGB 闪烁后

 

参考

Adafruit Feather nRF52840 Express 引出线

Adafruit Feather nRF52840 引导加载程序

粒子氙引出线和示意图

打开强迫症


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'粒子氙Arduino转换(Feather nRF52840 Express)',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);