TI CC26x0/CC13x0无线MCU架构解析:从Cortex-M3内核到低功耗射频设计

TI CC26x0/CC13x0低功耗设计:TI-RTOS电源管理与Standby模式实战 在物联网与嵌入式系统开发中,低功耗设计是延长电池续航的核心挑战,其关键在于对微控制器电源状态的精细管理。其基本原理是通过动态调整CPU、外设和时钟的工作状态,使系统在空闲时进入深度睡眠模式以大幅降低能耗。这项技术的核心价值在于,它允许设备在保持必要功能(如定时唤醒、事件响应)的同时,将待机电流降至微安级,从而显著提升电池寿命。典型的应用场景包括需要长期部署的无线传感器节点、可穿戴设备和智能家居终端。本文聚焦于德州仪器SimpleLink™无线MCU平台,深入剖析其集成的超低功耗传感器控制器与TI-RTOS电 阅读详情

1. 项目概述与核心价值

如果你正在为下一个物联网或无线传感节点项目选型,或者已经拿到了德州仪器(TI)的CC26x0/CC13x0系列芯片,却对那一千多页的技术参考手册感到无从下手,那么这篇文章就是为你准备的。我花了相当长的时间,把这些芯片从内核到外设,从电源管理到射频核心,里里外外“盘”了个遍。今天,我们不谈枯燥的寄存器列表,而是从一个一线开发者的视角,把这些零散的模块串联起来,讲清楚它们如何协同工作,以及在实际项目中你该如何驾驭它们。

CC26x0和CC13x0系列,本质上是一颗以 ARM Cortex-M3 为核心的超低功耗无线微控制器。它的核心价值在于,在一个极小的封装和极低的功耗预算内,集成了一个完整的无线系统所需的一切:一个性能足够处理复杂协议栈和应用逻辑的CPU、一块可编程的Flash、一块可灵活配置保留的SRAM、一个支持多种协议的 射频核心 、一套极其精细的 电源管理 系统,以及UART、I2C、SPI、定时器、ADC、加密引擎等你能想到的几乎所有常用外设。无论是做蓝牙低功耗(BLE)的智能手环、Zigbee的智能灯,还是Sub-1GHz的远距离水表,这个平台都能提供一站式的解决方案。理解它的架构,是写出稳定、高效、续航惊人的嵌入式代码的第一步。

2. 核心架构与设计哲学拆解

2.1 为什么是Cortex-M3?内核选型的底层逻辑

很多新手会问,市面上M0、M4内核的MCU那么多,为什么TI在这个系列上选择了Cortex-M3?这背后是性能、功耗和成本的一场精密权衡。M3内核是一个32位的哈佛架构处理器,这意味着它有独立的指令总线和数据总线,可以同时进行取指和数据访问,这在处理中断密集或需要频繁访问内存的无线协议栈时,优势明显。

更重要的是它的 Thumb-2指令集 。传统的ARM指令是32位的,虽然性能高但代码密度差;而Thumb指令是16位的,代码密度好但性能弱。Thumb-2是一种混合指令集,它允许16位和32位指令共存。编译器会智能地将常用、简单的操作编译成16位指令以节省Flash空间,而将复杂的、需要高性能的操作(比如硬件除法、乘累加)编译成32位指令。实测下来,使用Thumb-2通常能比纯32位ARM代码节省25%-30%的存储空间,这对于内置Flash容量通常为128KB或更小的物联网MCU来说,是至关重要的。你写的C代码,经过编译器优化后,会自动利用这一特性,无需额外干预。

另一个关键设计是 嵌套向量中断控制器(NVIC) 。在无线应用中,事件(如射频数据包收发完成、定时器超时、传感器数据就绪)的响应速度直接决定了系统的实时性和能效。NVIC将中断响应流程硬件化:当中断发生时,处理器硬件自动将关键寄存器压栈,并直接从向量表中取出中断服务程序(ISR)的入口地址跳转执行。这个过程是确定性的,通常只需要12个时钟周期。更妙的是“尾链”优化:如果当前中断还没处理完,又来了一个更高优先级的中断,NVIC会在第一个中断的现场恢复之前,直接开始处理第二个中断,省去了不必要的现场保存/恢复开销。这种硬件级的中断管理,是保证无线协议栈(如BLE连接事件处理)时序精度的基石。

2.2 系统级设计:如何实现“极致的低功耗”

CC26x0/CC13x0的功耗表现令人印象深刻,这并非单一技术的功劳,而是一套组合拳的结果。其 电源管理 系统是整个芯片的“能源中枢”,理解它,你就掌握了延长电池寿命的钥匙。

首先,供电架构上,芯片内部集成了一个高效的DC/DC降压转换器。与传统的线性稳压器(LDO)相比,DC/DC在将电池电压(如3V)降至核心电压(如1.8V)时,转换效率可达90%以上,而LDO的效率大致等于输出电压除以输入电压,会有不小的损耗。芯片也支持外部DC/DC模式,为对功耗有极致要求的场景提供可能。

其次,是精细的电源域划分。整个数字逻辑部分被划分为几个独立的电源域,最主要的是 MCU电源域(MCU_VD) 和 常开电源域(AON_VD) 。MCU_VD包含了Cortex-M3核心、大部分SRAM、Flash以及高速外设。AON_VD则包含了一个超低功耗的传感器控制器、实时时钟(RTC)、电池监控器等必须永远工作的电路。在睡眠时,MCU_VD可以被完全断电,而AON_VD依靠极低的漏电流维持运行。这种分区供电是实现纳安级待机电流的关键。

最后,是时钟门控和电源门控技术。时钟门控是指当某个模块(比如一个暂时不用的UART)空闲时,硬件自动关闭其时钟输入,消除动态功耗。电源门控则更彻底,直接切断该模块的电源,连静态漏电都消除了。CC26x0/CC13x0的时钟树非常灵活,你可以为每个外设独立选择时钟源(高频RC振荡器、外部晶体、或低频时钟)并分频,确保外设只在需要时、以最低的必要速度运行。

实操心得:功耗优化第一课 在写驱动时,养成“即用即开,用完即关”的习惯。初始化一个外设(如I2C)后,如果接下来有很长空闲时间,不要只是让它空转,而是调用对应的API(如 Power_releaseDependency )让电源管理框架将其关闭。TI的驱动库(DriverLib)和操作系统(如TI-RTOS)已经提供了良好的抽象,让你可以方便地管理外设的功耗状态,而不是直接操作晦涩的寄存器。

3. 核心功能模块深度解析与实操要点

3.1 射频核心:无线连接的“黑盒子”与驱动模型

射频核心(RF Core)是这套芯片的灵魂,但它对应用层开发者而言,更像一个“黑盒子”。它内部其实是一个独立的ARM Cortex-M0处理器,专门负责处理底层射频协议的时间关键型任务,比如BLE的链路层时序、IEEE 802.15.4的CSMA-CA(载波侦听多路访问)等。主CPU(Cortex-M3)通过一个叫做“门铃”(RF Doorbell)的机制与它通信。

你可以把RF Core想象成一个有专门技能的协处理器。主CPU通过写入命令到命令队列,并“按门铃”(触发一个中断)来通知RF Core有新任务。RF Core执行完命令(如开始一次射频发送)或发生特定事件(如收到一个数据包)后,会通过状态队列和中断来回告主CPU。这种设计将复杂的、时序严格的射频操作与上层的应用逻辑解耦,大大降低了开发难度。

对于不同的无线协议,TI提供了完整的协议栈(如BLE-Stack, TI-15.4-Stack)。你的应用层代码只需

CC2640R2F BLE5.0 CC2640R2F SPI驱动实现 SPI驱动 这一节我们详细讲解TI CC13x0/CC26x0 SDK开发平台 基于TI-RTOS的SPI驱动实现,主要了解SPI驱动的分层实现、驱动接口,以及结合开发板板载SPIFlash调试通过驱动。 概述 SPI(Serial Perripheral Interface),串行外设接口,是Motorala公司推出的一种同步串行接口技术,它能够使MCU以全双工(数据能够同时进行双 阅读详情

相关推荐

基于GCC/GDB的CC26xx/CC13xx开源开发环境搭建与底层机制解析

在嵌入式系统开发中,链接器脚本和启动文件是连接软件逻辑与硬件物理内存的关键桥梁,它们共同决定了程序在微控制器Flash和SRAM中的布局与初始化流程。理解其工作原理,对于实现代码优化、内存管理和深度调试至关重要。通过掌握GNU工具链(GCC/GDB)与开源IDE(如Eclipse)的集成,开发者可以构建高度定制化、成本可控的完整开发流程。这种方案尤其适用于对商业IDE许可证费用敏感或需要深度掌控编译、链接、烧录及调试全链条的工程实践。本文以德州仪器(TI)CC26xx/CC13xx系列无线MCU为例,详细拆

cong84596496的博客 351

CC26x0/CC13x0 Bootloader实战:UART/SSI双接口协议与12大核心命令详解

Bootloader(引导加载程序)是嵌入式系统启动和固件更新的核心组件,其工作原理是在芯片上电后完成硬件初始化并加载应用程序。在物联网设备开发中,稳定可靠的Bootloader是实现远程固件升级(OTA)和产品生命周期管理的关键技术。它通过串行通信接口(如UART、SPI)与主机通信,执行Flash的擦除、编程和校验等操作,确保设备固件可安全、高效地更新。本文聚焦于德州仪器(TI)CC26x0/CC13x0系列无线MCU的ROM Bootloader,深入解析其UART与SSI(SPI)双接口的工作机制、

weixin_33696822的博客 427

CC13x2/CC26x2无线MCU:双核架构与传感器控制器如何重塑物联网低功耗设计

在物联网设备开发中,超低功耗设计是延长电池寿命的核心挑战,其关键在于实现计算性能与能耗的精细平衡。这通常涉及动态电源管理、时钟门控等底层硬件技术,以及事件驱动的软件架构。从技术原理上看,通过将系统划分为不同功耗域,并让专用协处理器处理周期性任务,主处理器得以在多数时间深度休眠,从而将平均电流降至微安级。这种硬件级任务卸载与协同工作的架构,为智能传感器、资产追踪器等电池供电设备带来了革命性的功耗优化。以德州仪器的SimpleLink CC13x2/CC26x2无线微控制器平台为例,其创新的双核架构(Arm C

weixin_29195615的博客 325

从手册到实战:深入理解TI CC26xx/CC13xx MCU的低功耗架构与工程实践

在嵌入式系统与物联网设备开发中,微控制器(MCU)是核心计算单元,其架构设计与外设管理直接决定了系统的性能、功耗与可靠性。ARM Cortex-M系列处理器因其高效能效比与丰富生态,成为低功耗应用的主流选择。其工作原理基于哈佛架构与精简指令集,通过中断控制器(NVIC)实现快速响应,并利用电源管理单元实现多级睡眠模式,从而在活跃与休眠状态间灵活切换,以最小化能耗。这种低功耗设计的技术价值在于能够显著延长电池供电设备的续航时间,满足物联网传感器节点、可穿戴设备等对功耗极其敏感的应用场景需求。本文聚焦于德州仪器

weixin_30613727的博客 415

ARM Cortex-M异常处理与TI CC13x2事件总线架构深度解析

异常处理是嵌入式系统稳定运行的基石,它是一套由硬件直接支持的、用于响应内部错误和外部事件的完整架构。其核心原理在于通过向量表、优先级管理和硬件自动化的现场保存/恢复机制,实现对各类事件的快速、有序响应。这项技术的核心价值在于为系统提供了关键的“黑匣子”和“安全气囊”功能,确保在发生总线访问错误或栈溢出等故障时,系统能够诊断问题并尝试恢复,而非直接锁死。在物联网、工业控制等对可靠性要求极高的应用场景中,深入理解异常处理机制是设计健壮系统的前提。以TI CC13x2/CC26x2无线MCU为例,其独特的“事件总

weixin_34122810的博客 352

无线MCU选型与开发实战:以TI SimpleLink CC13xx/CC26xx系列为例

无线微控制器作为物联网设备的核心,集成了处理器、内存、射频收发器和多种外设,是实现智能感知与无线联网的关键。其核心原理在于通过高度集成的SoC架构,将计算与控制、无线通信功能深度融合,从而在硬件层面简化设计。这种集成带来的技术价值是显著的:它极大地降低了物联网设备的开发门槛、物料成本与功耗,使开发者无需成为射频专家即可实现可靠的无线连接。在应用场景上,无线MCU广泛服务于智能家居、工业传感、智慧城市和可穿戴设备等领域,满足其对低功耗、小体积和高可靠性的严苛要求。以德州仪器的SimpleLink CC13xx

weixin_33690367的博客 404

CC13x2/CC26x2 MCU事件驱动架构:中断、唤醒与低功耗设计详解

在嵌入式系统开发中,中断和事件驱动是连接硬件与软件响应的核心技术,它决定了系统如何感知外部变化并做出实时反应。其原理是通过可编程的事件路由网络,将事件生产者(如定时器、ADC)与消费者(如CPU中断、DMA)解耦,实现灵活、高效的响应机制。这种架构的技术价值在于显著提升系统的实时性、降低功耗,并减少CPU干预。在低功耗无线MCU(如TI CC13x2/CC26x2系列)中,事件驱动架构尤为关键,它通过MCU事件总线和AON事件总线的双总线设计,分别处理高速运行和深度睡眠时的事件,从而实现极致的能效比。应用场

weixin_33831673的博客 300

TI CC13x2/CC26x2载波侦听与嗅探模式硬件实现详解

载波侦听是无线通信中实现信道访问控制的基础技术,其核心原理是设备在发送数据前先检测信道是否被占用,以避免数据碰撞。在硬件层面,这通常通过检测接收信号强度指示(RSSI)或信号相关性来实现。该技术对于提升无线网络的可靠性和效率至关重要,尤其在低功耗物联网场景中,能有效减少冲突、降低重传率并延长设备续航。其典型应用场景包括实现CSMA/CA协议、构建星型网络协调器以及设计低功耗监听节点。本文聚焦于TI CC13x2/CC26x2系列无线MCU,深入剖析其射频命令引擎(RF Core)中载波侦听的硬件状态机机制,

weixin_30265103的博客 1149

ble_cc26xx_setupwin32_2_01_00_44423

德州仪器TI的蓝牙协议栈2.01,CC26XX,ble_cc26xx_setupwin32_2_01_00_44423

手把手教你设计2bit反射型超表面:从单patch扫参到pin管配置全流程

本文提供了一份2bit反射型超表面设计的完整工程实践指南。从单贴片谐振器的参数化扫描与“270度法则”应用,到PIN二极管等效电路模型的获取与集成,再到利用参数化扫描高效仿真四种工作状态,手把手指导读者完成从单元设计到阵列布局、偏置线集成及加工考量的全流程,旨在帮助射频工程师将概念转化为可加工测试的实体模型。

java5的博客 1019

postman响应体:“msg“: “请求缺失签名Sign“、 “msg“: “请求缺失时间戳“

请求标头有Sign、Timestamp,但是直接将网址复制到postman时,Headers没有自动生成这两个参数,所以运行时会报错。

m0_46862648的博客 1706

基于单片机自行车码表控制系统设计

*单片机设计介绍,基于单片机自行车码表控制系统设计。

QQ2193276455的博客 1487

从零到一:鲲鹏920服务器上的DeepSeek模型部署全流程解析

本文详细解析了在华为鲲鹏920服务器上部署DeepSeek模型的全流程,包括环境准备、模型服务框架部署、性能优化及生产环境方案。通过ARM架构优化和量化技术,显著提升模型推理效率,适用于企业级AI应用场景,助力国产化技术落地。

weixin_29094775的博客 597

Python编程基础05:运算符与表达式

文章目录一、算术运算符1、分类说明表2、注意事项3、案例演示任务1、计算成绩差与平均成绩课堂练习:编程处理带余除法。任务2、打印购物小票 运算符就是专门用于告诉程序执行特定运算或逻辑操作的符号。表达式是指由常量、变量和运算符组成的一个算式。编写程序对数据进行处理,其实处理就是对数据实施各种各样的运算,搞懂运算符与表达式是我们编写程序的基础性工作,本次讲课笔记通过案例讲解各种运算符的用法以及正确书写Python表达式的注意事项。 一、算术运算符 Python中的算术运算符就是用来处理四则运算的符号,也是

howard2005的专栏 3119

手把手教你写上位机软件(c#、winform)

上位机软件模板

qq_34059233的博客 7万+

【2024年华为秋招-12月25日-第三题(300分)- PCB印刷电路板布线】(题目+思路+Java&C++&Python解析+在线测试)

在PCB印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大、而且赛件之间还有别的器件和别的干扰源,在布线时我们希望受到的干扰尽量小。现将电路板简化成一个M×N的矩阵,每个位置(单元格)的值表示其源干扰度。如果单元格的值为0,表示此位置没有干扰源;如果单元格的值为非0,则表示此位置是干扰源,其值为源干扰度。连线经过干扰源或干扰源附近会增加连线的总干扰度。位置Axy的干扰源的源干扰度为dd01、若连线经过位置Axy,则其总干扰度会增加d;2、若连线经过离位置A。

m0_73659489的博客 344

SPICE仿真软件:HSPICE_(20).HSPICE仿真结果的后处理

HSPICE仿真结果的后处理是一个多步骤的过程,包括读取结果文件、可视化、分析和导出。通过使用命令行工具、Python脚本和HSPICE内置工具,可以高效、准确地完成这些任务。Python脚本的灵活性和强大的数据分析能力使其成为后处理的理想选择。自动化处理可以显著提高工作效率,减少人为错误,而高级分析方法可以更深入地理解仿真结果,为电路设计提供有力支持。

kkchenjj的博客 1382

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 集成学习核心技术解析:从Bagging到Boosting实战
下一篇: UE5 Spring Arm摄像机系统:实现电影级鼠标控制与动态运镜
blackproof
博客等级 码龄17年 12粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值