北方

  • 2019-01-11
  • 发表了主题帖: 【NXP Rapid IoT评测】+手机同步器之五

    本帖最后由 北方 于 2019-1-11 20:01 编辑 1、设计的第一个范例程序设计后调试的过程也非常简单。接上一贴的项目开发,下载bin文件到Rapid IoT后,需要准备好App就可以的。 2、启动App后会要求登录,依次输入注册信息后就进入主页面。 初始测试时出厂程序已经删除,因此没有设备,首先添加设备。 搜寻后可以发现标注着项目名称的设备, 然后provision,应该是pairing配对和数据信息交换的过程,时间有些长。 3、匹配成功后就显示出了设计的Application页面, 4、测试过程。点击botton,果然绿色的LED切换亮暗。 调试测试成功。 5、再进入到数据显示页面,添加数据面板,不成功。因为程序设计的过程就没有设置数据部分,因此,是没有数据的应用。 这样,控制,IoT,数据部分都测试了。 对于出厂演示程序部分,在范例程序的out of box demo中,你可以任意定制,流程相同。 6、小结。 Rapid IoT的开发效率是分钟级别的,在了解整个逻辑关系,并有模板程序的情况下,是非常快的完成原型测试。本设计中,IoT不显示文字是正确的显示,因为在程序设计中没有添加显示的模块,后续完善。 为了丰富定制,还提供了一个类似javascript的程序模块化,接口设计风格的界面。其实和图形化的设计是一样的,只是更便于理解逻辑。

  • 发表了主题帖: 【NXP Rapid IoT评测】+手机同步器之四

    1、使用Rapid IoT网页项目开发流程,完全在网页开发,具有完整的功能 。以远程控制LED为例进行测试。 2. 首先进入主页,创建手机APP端的控制。 使用button,触发文本变化,然后驱动BLE模块发送控制信号0-1. 3、进入IoT端的页面,则反过来,BLE模块接受控制信号,根据控制信号驱动rgbled显示模块,这样对应控制led灯的开关。 4、同步显示的云端,对应于控制信号的alarm。 5. 完成开发后,首先要compile一下,在云端就生成了bin文件和开发工程项目。 然后把这两个文件都下载。 5.1 对应bin文件,按照说明书,在按住S3不放的同时,用针尖触动S5,持续1-2秒,就出现U盘,这时,就可以用拖拽的方式写入bin文件, 随后的工程自动重启。 本项目下载顺利,重启后屏幕没有显示任何画面,应该是设计的逻辑有误。需要改进。 5.2 另一工程项目不能直接加载,需要导入开发环境,否则引用库都是空的,这里应该有些小问题,逐个导入是在是太费时间。 后续继续测试。

  • 2019-01-10
  • 回复了主题帖: 颁奖:安森美半导体——FOD83xx/T系列来袭! 答题赢好礼,更可免费申请样片

    确认个人信息无误,

  • 2018-12-29
  • 回复了主题帖: 颁奖:Littelfuse SiC MOSFET和肖特基二极管产品介绍及相关应用直播

    信息确认!感谢EEWORLD!

  • 回复了主题帖: 颁奖:英特尔®FPGA可编程加速平台介绍直播

    信息确认,谢谢。

  • 2018-12-28
  • 发表了主题帖: 【NXP Rapid IoT评测】+手机同步器之三

    本帖最后由 北方 于 2018-12-28 22:48 编辑 1、使用NXP Rapid IoT APP也是和IDE非常相似的,从设计来看,数据管理这一部分没有包括,但是提供了一个设备连接及数据跟踪的便携平台,采集的数据连续提供到后台,实现数据图形化。2、首先下载并登录NXP SSO,这个工具在Android平台工作不是很稳定,访问网页延时较长,而且容易出现访问asset的失效。采用Ipad则稳定得多。 然后,跳转到了登录的页面。 3、进入页面首先需要连接Rapid IoT kit ,打开蓝牙搜索设备,可以发现Rapid IoT设备,点击Provision,实现配对和添加, 4. 稍微等待一会儿,对应的数据就显示在页面了,前面Demo程序中包含的数据全部显示出来。同时还有红绿蓝三色LED灯控制按钮,实现对设备的远程控制。 5、在这时就可以添加数据显示界面了,需要注意的是空白的data是不能添加到显示panel的。提供了10M的数据空间,用来对数据进行缓存和保存。

  • 发表了主题帖: 【NXP Rapid IoT评测】+手机同步器之二

    本帖最后由 北方 于 2018-12-28 12:06 编辑 开发环境和开发工具 1、从目前开发的过程来看,比较方便的开发工具有rapid-iot-studio和MCUXpressoIDE_10.3.0_2200.exe,其他工具如KEIL和IAR等都没有提供配套的SDK,所以只介绍这两种方法。 2、出厂配置的范例程序,显示了展示主要的传感器和控制逻辑的功能,在手册里用一个精练的连续图示说明了主要的功能, 2.1 显示传感器和功能是否启用的设置页面 2.2 有关设备信息和下载APP的二维码 2.3 应用程序界面 2.4 传感器界面,这里主要展示了应用和功能 2.5 由于设计直观,所以不再逐页展示说明,见下面的动图。这些功能,都对应着Rapid IoT的手机APP对应功能,通过BLE蓝牙射频连接。 3、Rapid IoT Studio用NXP账号登录后显示如下,还未创建新的项目,这个页面有2个主要的部分,作为连接设备的后台数据显示功能,以及在线的项目开发功能。 3.1 使用范例手机APP可以连接Rapid IoT开发板,并采集数据上传到云端,也就是到 https://rapid-iot-studio.nxp.com/ 数据显示模块展示。 其实这个web IDE是https://platform.atmosphereiot.com/的一个定制版本,增加了NXP的logo,是一个比较成熟的开发平台。 在使用这个工具前要注册NXP的账号并登陆使用, 3.2 在登入系统后,需要先连接设备到NXP的云端,再定制数据窗口。 然后根据添加的视图和设计,定义参数。如果没有成功连接设备,这个页面就不会显示,不能添加成功。 3.3 然后,创建新的工程。项目提供了17个范例项目,充分展示了开发的多样性。这个视图分为 主页面 应用页面 云端页面 项目完成后要先编译,就在主页面显示出黄色高亮的部分,这个部分就可以下载。 点击,就把生成的bin文档下载到本地,可以用拖拽的方式直接下载到Rapid IoT开发板上。完成了开发的工作。 4. 使用MCUXpressoIDE_10.3.0_2200可以更丰富地定制自己的开发项目 4.1 首先下载安装新版的MCUXpressoIDE_10.3.0_2200。 然后导入SLN-RPK-NODE-SDK, 4.2 从sdk中的范例程序导入hello  world。 先选择开发板, 然后,选择开发的范例,在这个sdk中只有1个demo, 设定调试的一些参数后,就完成了导入。 熟悉的味道,熟悉的界面,不过很显然,这个开发板的项目是一个比较大的项目,从输入,传感器,显示,都有丰富的例程去等着填坑。 5. 初始开发环境设定完成。

  • 2018-12-26
  • 发表了主题帖: 【NXP Rapid IoT评测】+手机同步器之一

    本帖最后由 北方 于 2018-12-26 13:57 编辑 1、承前启后的Rapid IoT         通常意义上的物联网开发工具都是开发板的样子,但NXP Rapid IoT完全的不一样。因为NXP Rapid IoT几乎就是一个原型设计,而且,可以直接作为产品应用。虽然,从外形和气质上都不一样,我们还是可以很容易地从产品定位和尺寸规格上,迅速发现,NXP Rapid IoT就是从NXP Hexiwear发展来的。             1.1 Hexiwear         Hexiwear的目标就是将高端消费电子设备的时尚和易用性与精密工程开发平台的功能性和可扩展性相结合,配备基于ARM Cortex-M4内核的Kinetis® K6x微控制器,Kinetis KW40Z多模式无线电SoC,支持BLE。具备6个板载传感器,包括光学心率监测仪、加速度传感器、磁力计、陀螺仪、温度、湿度、光和压力传感器,带有彩色OLED显示屏和可充电电池。         从官网上,可以下载Android和iOS应用直接测试出厂的firmware,直接取得运动,环境等众多参数。不过Hexiwear的开发和其他开发板一样,都是公版的IDE,如Kinetis Design Studio IDE,KEIL MDK或者IAR。 1.2  而Rapid IoT就发生了变化,不仅是更新的器件整合到了Rapid IoT,更重要的一个变化就是Rapid IoT Studio online IDE的引入,一个基于web网页的完全免费,图形化,零门槛的开发平台。开发就不是攻城狮们的专利,而是直接定位到了大众平台,以提供一种综合全面、安全且具有优化功率的解决方案,实现物联网终端节点的快速原型设计和开发。其中集成了 11 款恩智浦器件(微控制器、低功率连接器件、传感器、NFC、安全元件、电源管理、接口),并与经过验证的软件支持设备(驱动器、RTOS、中间件、云连接)和 web IDE(具有基于 GUI 的编程功能) 结合。 1.3 首先对比一下搭载器件的组成有什么变化。 HEXIWEAR K64_120: Kinetis® K64-120 MHz, 256KB SRAM微控制器(MCU) ,基于Arm Cortex®-M4 内核KW40Z: Kinetis® KW40Z-2.4 GHz双模式:BLE和802.15.4无线连接微控制器(MCU),基于Arm® Cortex®-M0+内核FXAS21002C: 3轴数字陀螺仪FXOS8700CQ: 数字运动传感器 – 3D加速度传感器(±2g/±4g/±8g) + 3D磁力计MC34671: 600 mA单芯锂离子/锂聚合物电池充电器MPL3115A2: 20 to 110kPa, Absolute Digital Pressure Sensor Rapid IoT K64_120: Kinetis® K64-120 MHz, 256KB SRAM微控制器(MCU) ,基于Arm Cortex®-M4 内核KW41Z: Kinetis® KW41Z-2.4 GHz双模式:BLE和802.15.4无线连接微控制器(MCU),基于Arm® Cortex®-M0+内核NT3H2111_2211: NTAG I2C+, NFC Forum Type 2标签,带有I2C接口,适合入门级NFC应用FXAS21002C: 3轴数字陀螺仪FXOS8700CQ: 数字运动传感器 – 3D加速度传感器(±2g/±4g/±8g) + 3D磁力计MPL3115A2: 20 to 110kPa, Absolute Digital Pressure SensorNX3L2267: 低电阻双单刀双掷模拟开关NX3P191UK: 逻辑控制型高端电源开关PCF2123: SPI实时时钟/日历MC34671: 600 mA单芯锂离子/锂聚合物电池充电器A1006: 安全认证器IC:嵌入式安全平台           对比可知,核心的Kinetis® K64-120 MHz,没有变化,主要三颗传感器芯片,FXAS21002C: 3轴数字陀螺仪,FXOS8700CQ: 数字运动传感器 – 3D加速度传感器(±2g/±4g/±8g) + 3D磁力计,MPL3115A2: 气压传感器都没有变化。射频芯片从Kinetis® KW40Z 升级到Kinetis® KW41Z。唯一新增的是NT3H2111_2211这颗NFC芯片,扩展了和外界连通的手段。这样看来,就是一个加强版的Hexiwear,不过从开发来讲,原来支持的MBED OS开发方式彻底消失了,连接Rapid IoT不再有一个CMSIS-DAP的外挂盘符了,不过从开发来讲,这个是一个直观简化的开发程序下载方式,其实并没有重大的优势,取消掉其实也是一种不错的选择,基于mbed的开发最大的掣肘就是对于简单开发板没问题,但是对于复杂的多功能开发板,很多硬件和功能的访问是不能用户订制的,这样反而制了开发的灵活性和开发效率。 2、Rapid IoT主要器件详解 2.1 K64_120: Kinetis® K64-Arm® Cortex®-M4内核+ DSP,120 MHz, 256KB SRAM微控制器(MCU) ,1 MB闪存,256 KB SRAM,单周期MAC,单指令多数据(SIMD)扩展,单精度浮点运算单元,外设和存储器用的多达16通道的DMA。 这是一款历史悠久的MCU,而且采用这个芯片的明星产品多得数不过来,这也是“头牌”的特权。具有以下特性, [color=rgb(37, 37, 38) !important][size=1em]超低功耗: 灵活的低功耗模式,提供电源和时钟门控,可以实现最佳的外设活动和恢复时间。停止电流<340 nA,运行电流<250 μA/MHz,停止模式唤醒时间为4.5 μs,工作电压降至1.71 V时,仍可实现完整的存储器和模拟操作,延长了电池使用时间,低漏电唤醒单元,带有多达7个内置模块和16个引脚,可作为低漏电停止(LLS)模式/超低漏电停止(VLLS)模式的唤醒源, 低功耗定时器支持系统在低功耗状态下持续运行。           两个分辨率可配置的高速16位模数转换器(ADC),两个12位数模转换器(DAC),3个高速比较器。多达4个FlexTimer,总计20个通道。带硬件时间戳功能的IEEE 1588以太网MAC,USB 2.0 OTG (全速),带USB收发器。带嵌入式48 MHz振荡器的智能式设计,可采用USB无晶振系统设计,多达6个支持IrDA的UART,其中一个UART有ISO7816智能卡支持,IC间音频传输(I2S)串行接口,CAN模块,3个DSPI,3个I2C。 2.2 KW41Z是一款超低功耗、高集成度的单芯片器件,具备Bluetooth® Low Energy (BLE) v4.2和IEEE® 802.15.4射频连接。KW41Z无线MCU集成了一个2.4 GHz收发器,支持FSK/GFSK和O-QPSK调制,一个ARM® Cortex®-M0+ CPU,高达512KB闪存和128 KB SRAM,802.15.4分组处理器,硬件安全和外围设备,可满足目标应用的需求,在Bluetooth Low Energy网络和Thread等基于802.15.4的网络上进行并行通信。 KW41Z本身就是一个明星产品,尤其是主打低功耗视频集成的性能,由于出色的内存和性能,可以独立一锅烩完成可穿戴产品的设计,和 Kinetis® K64搭配的时候,只能做配角出现。对于需要快速验证的项目,其实这个开放平台,可以视作2个开发板的二合一产品。 2.3 NTAG I2C相对其他芯片就不那么出名,但是作为可组合的无源NFC接口和接触式I2C接口,是最快速、最经济的方式为电子设备添加轻触即付连接的方式。无接触卡的手机支付的标配。NXP继承了Philip在NFC领域的所有知识产权,是绝对的NFC老大,在欧盟审议高通合并案时候,NFC还专门作为反垄断的一个重要部分单独谈判的。 虽然看着很复杂,但是由于开发只需要I2C接口部分的通信部分,更便于使用了。 2.4 三种传感器 FXAS21002C 3轴陀螺仪是完整的3轴陀螺仪,采用紧凑型QFN封装,2.7 mA工作电流(2.8 μA待机电流),角速率分辨率为0.0625 dps/LSB,动态可选的全量程范围(±250/±500/±1000/±2000°/s),32采样FIFO,输出数据频率(ODR)范围:12.5 Hz至800 Hz。 FXOS8700CQ 6轴传感器将14位加速度传感器和16位磁力计与高性能ASIC结合在一起构建电子罗盘解决方案,典型的方向分辨率为0.1°,罗盘方位精度误差小于5°,宽动态范围±1200 μT,内嵌矢量大小检测,内嵌自动硬铁校准。 MPL3115绝对气压传感器,工作范围20kPa到110 kPa, 接口I2C,对环境气压进行敏感的监测。 2.5 MC34671是一款高性价比的全集成充电器,适用于锂离子或锂聚合物电池,包括涓流、恒流(CC)和恒压(CV)这三种充电模式。它能承受 28V的输入电压,通过外部电阻,恒流(CC)可设置为600 mA。恒压固定为4.2V。无需外部MOSFET、反向阻断二极管和电流感应电阻,确保最大600 mA的可编程充电电流,在-20 °C至70 °C温度范围内,电压精确度为±0.7,在-40 °C至85 °C温度范围内,电流精确度为±5%,最小输入工作电压为2.6 V。 这颗芯片在Hexiwear中一直延续到Rapid IoT中,原理图如下。 2.6 其他有趣的芯片,下面的这些芯片其实都有传统的替代产品,但是,在这里应用,展示了优越的特性。 2.6.1 PCF2123是一款CMOS实时时钟(RTC)和日历,最适合低功率应用。通过串行外设接口(SPI-bus)以6.25 Mbit/s的最大数据速率串行传送数据。还提供警报和定时器功能,可在中断引脚上生成唤醒信号。偏移寄存器允许对时钟进行精细调整。 实时时钟基于32.768 kHz石英晶体提供年、月、日、周、时、分和秒,运行时的低备用电流:VDD = 2.0 V和Tamb = 25 ℃时典型为100 nA,具备中断能力的自由可编程定时器和警报,时钟工作电压:1.1 V至5.5 V,带分离式可组合数据输入和输出的3线路SPI总线。 2.6.2 A1006安全认证器解决方案是一个完整的嵌入式安全平台,适用于电子配件、手机、便携式设备、计算机和消费电子设备、以及需要一个强大安全基础设施的嵌入式系统。A1006证书基于NIST P-224曲线和SHA-224摘要散列,使用ECDSA (椭圆曲线数字签名算法)进行数字签名,提供客户期望的证书颁发机构授权的密钥,非易失性存储器(NVM)用于存储器件行为数据、用途数据、物流信息或其它任意的数据 防范SPA、DPA和故障攻击,OWI 100 kbps,通过外置电阻器(上拉电阻)供电的总线,400 KB I2C快速模式接口。 这款芯片是硬件加密方案,在敏感性的如身份认证,支付场景下的安全解决方案,也是一个比较新型的设计思路。在Rapid IoT这个芯片是和NTAG I2C组合使用的,对于NFC通道的数据进加一道安全锁。 2.6.3 NX3L2267是双路低电阻单刀双掷模拟开关,适用于模拟或数字2 : 1多路复用器/解复用器。每个开关都具有一个数字选择输入(nS)、两个独立的输入/输出(nY0和nY1)和一个公共输入/输出(nZ)。这个在NTAG I2C和A1006的上端,连接MCU的I2C接口,控制通道的链路传输。独特之处在于NX3L2267能够使用1.8 V数字控制器切换4.3 V信号,无需逻辑电平转换。NX3L2267允许振幅高达VCC的信号从nZ传输到nY0或nY1;或从nY0或nY1传输到nZ。其低导通电阻(0.5 Ω)和平坦度(0.13 Ω)确保最小衰减和传输信号失真。 2.6.4 NX3P191是高端负载开关,具有支持高于500 mA持续电流的带输入浪涌电流降低的低导通电阻P沟道MOSFET以及在禁用时可使输出电容放电的集成式输出放电电阻。专为1.1 V至 3.6 V工作范围而设计的该器件在电源域隔离应用得到使用以降低功耗并延长电池寿命。在这个设计里,多处都使用到了NX3P191,集成这么多传感器,功耗管理显得非常重要,从设计看,这样的增加器件从成本上增加比较明显,但是如果能在续航上得到弥补,那么因低接地电流和超低关断电流而非常适合便携式电池供电而应用,非常值得考虑。 这个器件在Hexiwear中是没有的,从评测的角度看,这个是对hexiwear本质上的一个重大更新和改进。因为,在评测Hexiwear中最让人困惑的就是电池太不耐用了,即使是在关闭屏幕的节电状态下,都不能坚持半天,在开发的过程如此,那么在复杂的实用环境下,更是一个让人无法放心的地方。 2.7 其他元件。显然,Rapid IoT这个开发平台提供的不止这些,JDI的OLED屏,空气污染传感器等这些都能在这么集成的尺寸中实现,都是各个细分功能中的强者。不过,不逐个分解了,见下图。 3、应用于手机同步器的开发特征 3.1 独特的开发循环 在这个开发套件中,直接跳过了传统的多个步骤,直接就进入到了代码阶段,验证后,可以快速投产。整个设计是开源的,提供了OrCAD, Altium, Eagle格式的设计源文件,在这个基础上直接做减法,还能不能更省事啊。 3.2 互联互通的逻辑配置 可以采用联网的方式,有3种:采用Thread网关,外接wifi或通讯模块,采用内置的蓝牙射频连接。本设计就采用内置的蓝牙模式,应该是这么短时间内最可行的评测方式。 4、手机同步器的评测计划 4.1 目标       通过制作一个手机同步器,来实现评测。具体功能是手机联网,采集网络信息,如当日天气,污染指数等。通过蓝牙推送到便携设备。 4.2 计划和进度 第一周,硬件原理分析和开发环境的搭建和测试。 第二周,手机应用的重要传感器的数据采集和开发测试。应用云开发模式。 第三周,手机客户端app演示开发。 第四周 联合调试,实现与手机的信息交换和互联功能。 此内容由EEWORLD论坛网友北方原创,如需转载或用于商业用途需征得作者同意并注明出处

  • 2018-12-24
  • 回复了主题帖: (全部已安排派送,帖内可查货运单号)恩智浦快速IoT原型设计套件50名入围网友揭晓

    已确认申请评测计划可完成,请按照论坛资料相关信息邮寄开发板。 谢谢。

  • 2018-12-12
  • 回复了主题帖: 样片颁奖:安森美半导体重磅推出超低功耗蓝牙芯片 RSL10

    信息确认。

  • 2018-10-26
  • 回复了主题帖: 颁奖【阅读罗彻斯特电子停产半导体器件解决方案,答题赢取京东卡!】

    确认个人信息无误

  • 2018-10-25
  • 回复了主题帖: 颁奖: 逛工业自动化展TE Connectivity网上展厅,答题赢好礼!颁奖啦

    确认,请换E金币。

  • 2018-10-15
  • 回复了主题帖: 颁奖:TI&WPI直播:TI超低功耗MCU在触摸及智能化工业网关中的应用

    确认信息

  • 2018-10-11
  • 发表了主题帖: 东芝光继电器评测#2 TLP3547项目中的应用

    本帖最后由 北方 于 2018-10-11 16:33 编辑 项目中的应用1、TLP3547的基本元件评测只是说明了其中的应用方案,具体在实践项目中,应用起来应该是更为方便。 2、这里先使用Blink程序, 用digital output来控制输入,这样可以点亮LED灯。 Arduino程序代码如下; // the setup function runs once when you press reset or power the board void setup() {   // initialize digital pin LED_BUILTIN as an output.   pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() {   digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)   delay(1000);                       // wait for a second   digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW   delay(1000);                       // wait for a second }复制代码 视频如下 3. 然后使用距离传感器来启动LED等的点亮和关闭, void setup() {   // initialize serial communication at 9600 bits per second:   Serial.begin(9600);     pinMode(LED_BUILTIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() {   // read the input on analog pin 0:   int sensorValue = analogRead(A0);   // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):   float voltage = sensorValue * (5.0 / 1023.0);   // print out the value you read:   Serial.println(voltage);   if (voltage 3) {   digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW   delay(1000);      }    }复制代码视频如下

  • 2018-10-08
  • 回复了主题帖: 【奖品发送完毕】颁奖: 文晔科技有奖直播:C2000在电机控制中的应用颁奖啦~

    确认想信息

  • 2018-09-29
  • 发表了主题帖: 5. 用pytorch设计计算图

    本帖最后由 北方 于 2018-9-29 11:05 编辑 1、在CMSIS-NN中,比较直观的有一个计算图,每个步骤对应一个函数。那么在pytorch是同等可以自己定义和设计的,下面的步骤就是说明如何建立计算图给后续进行移植和转换的。 2. 在pytorch中文本识别也是如下图,因为已经在CMSIS-NN中介绍过了,就不再对照卷积层,池化层和全连层的对比了。直接见图。 import torch import torch.nn as nn import torch.nn.functional as F class Net(nn.Module):     def __init__(self):         super(Net, self).__init__()         # 1 input image channel, 6 output channels, 5x5 square convolution         # kernel         self.conv1 = nn.Conv2d(1, 6, 5)         self.conv2 = nn.Conv2d(6, 16, 5)         # an affine operation: y = Wx + b         self.fc1 = nn.Linear(16 * 5 * 5, 120)         self.fc2 = nn.Linear(120, 84)         self.fc3 = nn.Linear(84, 10)     def forward(self, x):         # Max pooling over a (2, 2) window         x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))         # If the size is a square you can only specify a single number         x = F.max_pool2d(F.relu(self.conv2(x)), 2)         x = x.view(-1, self.num_flat_features(x))         x = F.relu(self.fc1(x))         x = F.relu(self.fc2(x))         x = self.fc3(x)         return x     def num_flat_features(self, x):         size = x.size()[1:]  # all dimensions except the batch dimension         num_features = 1         for s in size:             num_features *= s         return num_features net = Net() print(net)复制代码 简单对照一下, 在CMSIS-NN中的第一层, 卷积函数 arm_convolve_HWC_q7_RGB(); 激活函数arm_relu_q7(); 池化层函数arm_maxpool_q7_HWC(); 分别对应 self.conv1 = nn.Conv2d(1, 6, 5) x = F.relu(self.fc1(x)) x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))复制代码 实际执行也是按照如下顺序进行的 input -> conv2d -> relu -> maxpool2d -> conv2d -> relu -> maxpool2d       -> view -> linear -> relu -> linear -> relu -> linear       -> MSELoss       -> loss复制代码 3. 训练这模型 3.1 典型的训练图按照以下步骤创建和执行 -定义NN网络的学习参数,维数 - 输入数据集并且迭代 - 用这个网络处理输入的数据 - 计算这个初始weight的损失,也就是偏差 - 扩散并计算参数,把输出的数据迭代计算并回溯 - 用定义的weight函数,更新weight,常见的规则是weight = weight -learning_rate * gradient 3.2 数据集需要独立采集和录入- 加载并预处理数据,即数据清洗- 定义CNN网络,如上程序所示,其中的数据和层数不是固定的,是需要自己定义的当然,结果会有比较大的不同。- 定义损失函数和优化器,这里引入一个交叉熵的概念import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)复制代码 [size=1.125]- 用这个网络处理训练数据,一般是用循环语句,把全部数据集加载并计算一遍for i, data in enumerate(trainloader, 0):   ... ...复制代码 - 测试这个网络和计算结果的正确率。这个和人工规则模拟的最大不同,是这个不会全对,在一定的正确率下就是最优。那么测试的原理就是用一组测试数据集(远远小于训练集),逐个输入新的weight和loss数值下的图中,得出新的分类结果。确定这个计算图的有效性。在不正确的参数选择和数据不干净的情况下,正确率会低至15%,这个和乱猜的结果差不多了,到底只有10个数字。4. 这个是使用pytorch训练数据的简单流程,具体每个步骤都比较重要,也会影响这个结果。分析这个主要是说明,这个训练是如何使得训练集用在GD32F3xxx上的。上述训练的结果,其实对应2步工作:4.1 定义不同的layer,如Conv2d(1, 6, 5)对应arm_convolve_HWC_q7_fast(img_buffer2, CONV2_IM_DIM, CONV2_IM_CH, conv2_wt, CONV2_OUT_CH, CONV2_KER_DIM,                           CONV2_PADDING, CONV2_STRIDE, conv2_bias, CONV2_BIAS_LSHIFT, CONV2_OUT_RSHIFT, img_buffer1,                            CONV2_OUT_DIM, (q15_t *) col_buffer, NULL);其中,需要对照的是static q7_t conv1_wt[CONV1_IM_CH * CONV1_KER_DIM * CONV1_KER_DIM * CONV1_OUT_CH] = CONV1_WT;等等,这里面已经定义了对应的维度的。4.2 导入训练后的数据,#include "arm_nnexamples_cifar10_weights.h"这里的数据就是从这个pytorch模型中导出的数据weight数据。在torch.nn里面导出模型中就有。4.3 可以看出,这个是一个不小的工程,需要很多新的概念,足够数据集,强大的计算平台和硬件。当然,这个训练集训练一次就可以反复用,对别人如果不解释也是看不明白的。供大家参考指证。下一步,就要开始搭建属于本项目的训练模型了。引入计算模型,可以避免自己使用dsp这样的编程和应用,直接用cmsisi-nn的引用就可以了。而且还可以尝试使用http://librosa.github.io/librosa/ 这样的专业的音频处理库进行音频的分割录入和处理,其实是降低了数据处理难度,从软件上辅助编程。

  • 2018-09-28
  • 发表了主题帖: [基于GD32F350RB的音频识别器] 4.使用Caffe2构建训练平台

    本帖最后由 北方 于 2018-9-29 08:50 编辑 1. 正如文前所述,这个NN模型如果跑起来,前期的准备工作确实有些大。范例中选择了手写数字识别,这个是在多人的工作基础上的总结。而且这么模型是在多个深度学习引擎都实现的标准例子。 那么,如果需要搭建自己的模型,首先就是要搭建这个计算图,然后才是输入数据进行训练,然后输出训练集的过程。问题是这个深度计算模型的进展和更新比学习的还要快得多,就版本还没搞通,新版本就有了很大的更新。 这个在范例中引用的caffe模型就可以看出来,采用更新的caffe2,和caffe是最接近的,那么输入的数据已经有很多不同了。具体的caffe中,layer和weight等是独立的,但是caffe2中结合起来成了新的数据格式bolb。所以训练后,还要分离出来,才能用在这个原始的数据中。 最流行的tensorflow其实给用户开的是傻瓜窗口,连计算图都不用自己定义了,直接给一个缺省的,那么在导入到低级的硬件上就太难了。 然鹅,caffe2又要被整合到pytorch1.0中去,那么,最好就从pytorch的使用开始。 具体哪个深度学习的框架更好就是一个有些太深的知识坑,搞硬件的最好直接跳过。 2. Pytorch安装 2.1 最好用,出问题最少的就是用anaconda环境安装,这样会在兼容性上提前进行检查。 conda install pytorch-cpu -c pytorch pip3 install torchvision复制代码 这样分别安装了pytorch的无GPU版本,以及图形化的torchvision。 进入下述反馈,就说明没有问题。可以安装成功了。现在显示的还是0.4.1版本的。Pytorch1.0还要等等才能发出。 2.2 测试一下 from __future__ import print_function import torch x = torch.rand(5, 3) print(x)复制代码

  • 回复了主题帖: [基于GD32F350RB的音频识别器] 3. CMSIS-NN神经网络配置解析

    freebsder 发表于 2018-9-28 03:00 我说的就是从第三方弄出来的参数,arm没有给非商业客户提供工具、格式、文档等任何公开资料。你想自己灌 ...
    确实比较难的,最近搞不动了。 不过花些时间应该差不多,过了比赛时间我也弄出来给大家抛砖引玉。

  • 2018-09-27
  • 回复了主题帖: 金秋9月,学习TI电源课程抢楼有礼!

    熟练掌握高压 MOSFET/IGBT 栅极驱动设计

  • 发表了主题帖: 东芝光继电器评测#1 晒资料

    本帖最后由 北方 于 2018-9-27 12:44 编辑 1. 这次评测的TLP3547其实是比较常见的系列的光电隔离产品,在多种需要隔离干扰的电路中,是必须选择的。但是最大的变化,是提高了输出能量,达到5A,那么就不是光电隔离这么简单了,其实是一个高性能的继电器。当然这样变化的最大损失就是作为信号的开关频率有所损失,预计能做到的最好就是直接应用在继电器的直接驱动。其实,对比一下采用控制芯片和功率芯片合一的IPM产品,其实也是做到了类似的功能,不过这也体现出了另一优点,就是小体积。也就是厂家如下3个最大的特点。 业内最小的光继电器;使用寿命长、体积小、免维护;业内首创5A电流控制。 2. 活动进行中,最后一批的入围,晒一下刚收到的产品,尺寸确实很小,对比一节7号电池。 3. 相应的产品资料 3.1 这次的资料采用了新型封装,也配套了打印的资料如下。 3.2 再分析资料,其实和这款产品的应用范围其实更广。包括 机械继电器的直接替换工厂自动化PLC测量仪器自动测试设备。 结合,基本特性,这个就是一个光驱动的单端60V MOSFET,最大输出电流5A。 不过,这里用了2个MOSFET,就为了实现双向导通,就像真正的继电器一样工作,否则,只能选定一个电流方向。 不过,如果需要,确实可以直接连接一个MOSFET,因为引脚都已经引出了,这个是TLP3547的扩展用途。 3.3 对于控制的电源,驱动电源5V,30mA,这个是多数MCU可以直接驱动的范围。推荐的输出电压48V,5A。3.4 在这个参数表中,没有MOSFET的关断频率,这个也是前面不少帖子用火热的测试结果得出的实测数据。 在参数表中,可以看到的最大导通时间5ms,最大关断时间是1ms。这也就意味着超过166Hz的实际测试都不能保证性能。 在实测中,造成快速温升的是不断提高的结温,应该说MOSFET的保证开断频率应该都是kHz之上,所以,大家在测试的时候挑战200Hz时都没有什么心理负担。 4. 建议。温升过高,应该是散热没有作为主要的考量指标,所以,在应用的时候,按照娇气的MOSFET考量,参照L298增加散热片应该不过分。不过,更应该是提供一个超温保护电路,在温度过高时直接停止才好。这个在MOSFET里整合一个保护电路是有必要的。5. 后续评测,以一个实际的应用项目来完成。不再对元件测试了。

TA暂时无记录哦~

最近访客

< 1/4 >

统计信息

已有73人来访过

  • 芯币:285
  • 好友:--
  • 主题:59
  • 回复:60
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言