




已阅读5页,还剩124页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主题 飓风行动 半天学会ARMCortex M3 利尔达嵌入式研发中心 M3小组2010年12月 目录 一 TIStellarisM3产品总体介绍和未来展望 什么是ARM Cortex M3 Cortex系列ARM处理器在各种特定市场应用中 提供一系列解决方案 Cortex强调ARM的市场战略围绕特定应用和性能要求技术 ARMCortex系列包含3个系列 都是用Thumb 2指令集 增强了性能以及适应各种市场的成本要求 ARMCortex A系列 用于复杂操作系统的应用处理器 支持ARM Thumb Thumb 2指令集ARMCortex R系列实时操作系统的嵌入式处理器支持ARM Thumb Thumb 2指令集ARMCortex M系列嵌入式处理器优化成本仅支持Thumb 2指令集 ARM Cortex M3特性 Cortex M3为微控制器版本优化的单周期flash快速 准确的中断控制器 6个时钟周期 不多于12个时钟周期单周期硬件乘法器和除法器Thumb2混合16 32 位指令集 无须模式切换三种睡眠模式降低电源消耗高级调试功能包括数据断点和软件断点自动操作 读 修改 写 单周期指令 1 25DMIPS MHz 比ARM7和ARM9好 Cortex M3优点 为MCU市场而设计能力更胜ARM7 完全不需要汇编比起ARM7的执行Cortex M3只需要近似 的Flash在MCU控制应用程序上面快了2 4倍原始中断性能 我们快了85 PID 进程控制 主循环 我们快了217 乘法加强代码 我们快了294 ARMCortex M系列处理器 开发满足用户需求从头设计 以满足低功耗 高性能的市场需求ARM7TDMI是一个出色的处理器但是已发展15年 用户期望继续发展 TI微控制器家族 2009年5月 TI收购了LuminaryMicro公司 LuminaryMicro公司是ARM的Cortex M3的架构的主要合作伙伴目前 TI提供的四代的Stellaris的ARMCortex M3的微控制器Stellaris 系列已经有160多个型号混合信号控制器主要应用在能源 安全应用 通信市场用于运动控制应用 实时通讯 Ethernet ControllerAreaNetwork USB 智能模拟功能以及电源转换的独立IP设计强大的群星硬件工具 文档 技术支持和ARM公司第三方支持 让您体验快速 高效 标准化的市场领导解决方案 Stellaris处理器 Stellaris世界级的支持 Micri m Micri m Over160familymembers20 25 50 80 and100MHz8Kto256KFlash2Kto96KSRAM48 LQFP64 LQFP100 LQFPand108 BGAIndustrial ExtendedTemperature Stellaris 各个系列特点 LM3S1xxxnon CAN non EthernetLM3S2xxxCANLM3S3xxxUSBLM3S5xxxCAN USBLM3S6xxxEthernetLM3S8xxxEthernet CANLM3S9xxxEthernet CAN USB 系列型号Flash容量SRAM容量LM3Sx1xx16KSRAMLM3Sx2xx32KSRAMLM3Sx3xx16KSRAMLM3Sx4xx32KSRAMLM3Sx5xx64KSRAMLM3Sx6xx32KSRAMLM3Sx7xx64KSRAMLM3Sx8xx32KSRAMLM3Sx9xx64KSRAMLM3SxBxx96KSRAMLM3SxDxx96KSRAM 64KFlash 96KFlash 128KFlash 256KFlash 512KFlash Stellaris器件查询工具 Stellaris微控制器家族 二 TIStellarisM3Tempest系列硬件性能讲解 基本外设模块介绍 1 电源模块2 调试接口3 时钟模块4 系统定时器5 工作模式6 休眠模块7 GPIO模块8 GPTM模块9 看门狗模块 10 PWM模块11 QEI模块12 UART模块13 SSI模块14 ADC模块15 CAN模块16 EPI17 Ethernet模块18 USB模块 Stellaris 电源模块 三路输入电源VDDC内核电压1 2VVDD数字电源 3 0 3 6VVDDA模拟电源一路输出电源LDO内部电压调整器1 2V Stellaris 调试接口 JTAG行业标准的边界扫描电路内测试在电路Flash编程并行JTAGTAP允许进入到芯片的JTAG边界扫描Cortex M3的调试的JTAG支持SerialWireDebug SerialWireTrace SWD SWT 一种提供调试访问和两个引脚控制 跟踪信息的引脚的新技术 Stellaris 调试接口 如果需要调试 或Flash映像文件已损坏 您可以随时使用的JTAG SWD接口对Flash下载bin文件 请记住 所有的Stellaris评估工具包可以作为在电路调试接口 ICDIs 这意味着你可以用它对其他板子进行编程 调试 例如IDM Stellaris 时钟特点 具体介绍一下这4个时钟源 高精度内部振荡器 PIOSC 内部振荡器是片内时钟源 它不需要使用任何外部元件 内部振荡器的频率是16MHz 1 不依赖精确时钟源的应用可以使用这个时钟源来降低系统成本 内部振荡器是器件在POR过程中和POR之后使用的时钟源如果需要主振荡器 软件必须在复位后使能主振荡器 并在改变时钟基准前使主振荡器稳定下来 主振荡器OSC 主振荡器用下面的其中一种方法来提供一个频率精确的时钟源 OSC0输入管脚连接一个外部单端时钟源或在OSC0输入和OSC1输出管脚之间连接一个外部晶体 允许的晶体值取决于主振荡器是否用作PLL的时钟参考源 如果使用PLL 则从3 579545MHz到16 384MHz 如果不使用PLL 则从1MHz到16 384MHz Stellaris 时钟特点 内部30kHz的振荡器OSC 内部30kHz振荡器与内部振荡器类似 它提供30kHz 30 的工作频率 它主要用在深度睡眠的节电模式中 这个节电模式从减少的内部切换中获益 它还允许主振荡器掉电 Hibernation振荡器 外部实时振荡器提供一个低频率 精确的时钟基准 它的目的是给系统提供一个实时时钟源 实时振荡器是休眠模块的一部分 它也提供了一个精确的深度睡眠或休眠模式节电源 可以使用4 194304MHz晶振或者32 768kHz有源晶振 Stellaris 时钟模块框图 Stellaris 系统定时器 Cortex M3包含一个集成的系统定时器SysTick SysTick提供了一种简单的 24位写清零 clear on write 递减的 到零重装 wrap on zero 的计数器 该计数器带有灵活的控制机制 RTOS节拍定时器以一个可编程的速率 例如100Hz 运行并调用SysTick程序 使用系统时钟的高速报警定时器 速率可变的报警或信号定时器 时间延迟的范围由使用的参考时钟和计数器的动态范围决定 简单的计数器 软件可使用该计数器来测量完成时间和使用时间 基于错过 满足持续时间的内部时钟源控制 控制和状态寄存器中的COUNTFLAG位字段可用来确定操作是否作为动态时钟管理控制循环的一部分 在设定的持续时间内完成 Stellaris 工作模式 运行模式 运行模式提供了处理器和RCGCn寄存器当前使能的所有外设的正常操作 系统时钟可以是包括PLL在内的任何可用的时钟源 睡眠模式 睡眠模式通过Cortex M3内核执行一条WFI 等待中断 指令进入 系统中任何适当配置的中断事件将使处理器回到运行模式 在睡眠模式中 Cortex M3处理器内核和存储器子系统不使用时钟 当自动时钟门控使能时 见RCC寄存器 SCGCn寄存器使能的外设时钟被使用 而当自动时钟门控禁止时 RCGCn寄存器使能的外设时钟被使用 睡眠模式下的系统时钟 其时钟源和频率与运行模式下的相同 Stellaris 工作模式 深度睡眠模式 深度睡眠模式通过先写ARMCortex M3NVIC系统控制寄存器的深度睡眠使能位 再执行一条WFI指令进入 系统中任何适当配置的中断事件将使处理器回到运行模式 Cortex M3处理器内核和存储器子系统不使用时钟 当自动时钟门控使能时 DCGCn寄存器使能的外设时钟被使用 而当自动时钟门控禁止时 RCGCn寄存器使能的外设时钟被使用 系统的时钟源默认是主振荡器或DSLPCLKCFG寄存器指定的内部振荡器 前提是其中一个时钟源要使能 当使用DSLPCLKCFG寄存器时 内部振荡器上电 如有必要 主振荡器可以掉电 如果PLL在执行WFI指令时运行 则硬件将使PLL掉电 并将有效RCC RCC2寄存器的SYSDIV域分别替换成 16或 64 当出现深度睡眠退出事件时 硬件会把在深度睡眠阶段被停止的时钟使能之前 将系统时钟恢复为开始进入深度睡眠模式时采用的时钟源和频率 休眠模式 这种模式下 器件主要功能部件的电源关断 只有休眠模块的电路有效 需要一个外部唤醒事件或RTC事件来使器件回到运行模式 Cortex M3处理器和休眠模块之外的外设看见一个正常的 上电 序列 处理器启动运行代码 通过检查休眠模块寄存器可以确定已经从休眠模式重新启动 Stellaris 休眠模块特点 休眠模块管理微控制器其它功能模块电源的解除和恢复 提供一种降低功耗的方法 当处理器和外设空闲时 电源可以完全解除 只维持休眠模块的供电 电源可以因为一个外部信号而恢复 也可以利用内置实时时钟 RTC 在某个时刻被恢复 休眠模块可单独通过电池或辅助电源提供电源 到个别外部稳压器的电源切换逻辑用作外部信号唤醒的专门管脚低电池检测 发出信号和中断发生32位实时计数器 RTC 2个32位的RTC匹配寄存器 用作定时唤醒和中断产生时钟源来自一个32 768kHz的外部振荡器或一个4 194304MHz的晶体RTC预分频器调整 对时钟速率进行良好地调节64个32位字的非易失性存储器可编程的匹配 外部唤醒和低电池电压事件的中断 Stellaris 休眠模块框图 Stellaris GPIO特点 高达33个GPIO 64LQFP 60个GPIO 100LQFP 具体数目取决于配置输入 输出可承受5V每个GPIO均可用于产生中断 可编程为边沿触发或电平检测在读和写操作中通过地址线进行位屏蔽可启动ADC采样序列GPIO端口配置的可编程控制弱上拉或下拉电阻2mA 4mA和8mA端口驱动8 mA驱动的斜率控制开漏使能数字输入使能高达4个GPIO可以驱动输出18mAGPIO配置灵活 基本上每个IO口都有多种功能 Stellaris GPIO框图 Stellaris GPTM通用定时器 3个或4个通用定时器模块 GPTM 每个模块都能提供2个16位的定时器 计数器 每个通用定时器模块都能够被配置为独立运作的定时器或事件计数器 用作单个32位的定时器或用作一个32位的实时时钟 RTC 以捕获事件 或者用作脉宽调制输出 PWM 或触发模数转换32位定时器模式可编程的单次触发定时器可编程的周期定时器当接入32 768 KHz外部时钟输入时可作为实时时钟使用当控制器在调试期间使CPU暂停标志有效时 用户可以在周期和单次触发模式中使能中止 stalling Stellaris GPTM框图 Stellaris 看门狗特点 双看门狗定时器32位递减计数器 可编程重装载寄存器带使能位的独立看门狗时钟可编程中断产生逻辑和中断屏蔽位寄存器锁保护可设置是否使能复位功能可以设置在调试程序时 程序暂停时停止计数 Stellaris 看门狗框图 Stellaris PWM特点 3个PWM信号发生模块 每个模块都带有1个16位计数器 2个比较器 1个PWM信号发生器和1个死区发生器1个16位的计数器运行在递减或递增 递减模式输出频率由一个16位的装载值控制可同步更新装载值当计数器的值到达零或者装载值时产生输出信号2个PWM比较器比较器值的更新可以同步在匹配的时候产生输出信号PWM信号发生器根据计数器和PWM比较器的输出信号来产生PWM输出信号可产生两个独立的PWM信号 Stellaris PWM特点 PWM比较事件波形 减计数模式 先递增后递减模式 AsymmetricalWaveform SymmetricalWaveform CMPA CMPA CMPB CMPB Stellaris PWM框图 Stellaris PWM应用 Stellaris带多路PWM 可以广泛用于电机控制 数字电源等场合 Stellaris QEI特点 两个正交编码器接口 QEI 模块 每个QEI模块对正交编码器轮产生的代码进行解码 将它们解释成位置对时间的积分 并确定旋转的方向 另外 它还能够捕获编码器轮运转时的大致速度 每个Stellaris 正交编码器具有以下特性 使用位置积分器来跟踪编码器的位置使用内置定时器来捕获速度QEI在下列事件发生时将产生中断 检测到索引脉冲 速度定时器发生计满返回事件 旋转方向发生改变 检测到正交错误 Stellaris QEI框图 Stellaris UART特点 3个完全可编程的16C550 typeUART 支持IrDA 支持ISO7816智能卡协议带有独立的16 8发送 TX 和16 12接收 RX FIFO 减轻CPU中断服务负载 loading 可编程的波特率发生器 带有小数分频器可编程设置FIFO长度 包括1字节深度的操作 以提供传统的双缓冲接口 FIFO触发水平可设为1 8 1 4 1 2 3 4和7 8标准异步通信位 起始位 停止位 奇偶位无效起始位检测行中断的发生和检测 Stellaris UART框图 Stellaris SSI特点 主机或从机操作可编程控制的时钟位速率和预分频独立的发送和接收FIFO 16位宽 8位深可编程的接口 与Freescale的SPI接口 MICROWIRE或者TI TexasInstruments 器件的同步串行接口相连可编程的数据帧大小 范围为4到16位内部循环测试模式可用于诊断 调试测试 Stellaris SSI框图 Stellaris ADC特点 8个 16个模拟输入通道单端和差分输入配置内部温度传感器1 000 000次 秒的采样率4个可编程的采样转换序列 入口长度1到8 每个序列均带有相应的转换结果FIFO灵活的触发控制控制器 软件 定时器模拟比较器PWMGPIO硬件可对多达64个采样值进行平均计算 以便提高精度 Stellaris ADC框图 Stellaris CAN特点 控制器局域网 CAN 1 2个CAN控制器支持CAN协议版本2 0partA B传输位速率可达1Mb s32个消息对象 每个都带有独立的标识符屏蔽可屏蔽的中断可禁止TTCAN的自动重发模式可编程设定的循环模式用于自检操作 Stellaris CAN框图 Stellaris CAN典型应用 LM3S芯片内置CAN控制器 然后通过CAN物理芯片连接到CAN网络上 进一步与其他设备通信 Stellaris EPI特点 支持多种设备SDRAM 支持x16 单数据速率 高达50MHz支持低成本的SDRAM芯片 最大为64MB包括自动更新和访问所有banks rows包括睡眠 待机模式主机总线接口 传统的8 16位微处理器总线接口功能类似器件兼容操作 如 PIC ATMega 8051 其他访问SRAM NORFlash和其他设备 高达24MB的寻址支持地址数据线复用和非复用两种方式访问多种设备 支持无地址FIFO的8位接口变量 支持发送FIFO空和接收FIFO满标志速度控制 读取和写入数据等待状态计数器手动片选 或使用额外的地址引脚 Stellaris EPI特点 支持多种类型设备机器到机器 宽并行接口用于快速通信 如CPLDs和FPGAs数据宽度可达32位 数据速率可达150MByte每秒可选地址大小从4位到16位可选时钟输出 读写频率 和时钟使能输入其他特性普通并行GPIO 快速控制的FIFO用于普通外设和数字控制阻塞和非阻塞读取写FIFO和处理器在时间上独立直接内存访问 DMA Stellaris EPI框图 Stellaris Ethernet特点 10 100以太网控制器MAC PHY 集成PHY层省去外加PHY芯片的麻烦遵循IEEE802 3 2002规范遵循IEEE1588 2002精确时间协议 PTP 在100Mbps和10Mbps速率运作下支持全双工和半双工的操作方式自动的MDI MDI X交叉校验可编程MAC地址节能和断电模式例程包中支持Lwip uip等协议栈的详细例程 Stellaris Ethernet框图 功能描述 MII 1 1隔离变压器 LM3S 数据链路层 MAC 媒体独立接口 MII 发送缓存 接收缓存 MII管理接口 流控制 网络物理层PHY 媒体独立接口 MII 发送 接口 以太网连接典型电路 优点 集成PHY层 减少PCB走线难度 增加以太网稳定性 什么是IEEE1588 系统 IEEE1588被称为 网络精确时钟同步协议及控制系统 或精确时间协议 简称PTPIEEE1588允许在系统组件的时钟同步 以高度的准确性 使用Stellaris很容易实现微秒的精度并且成本低提交小等的特点 如何使用的同步时钟 在一个IEEE1588系统的时钟通常用来协调系统上执行的主要应用的活动 如果传感器的数据源时间戳 时间标记的数据可能联系后面的相关业务 时钟是用来启动一个或多个组件的行动 执行机构可以改变它的价值 同时时间T1传感器测量值在时间T 被标记当时钟同步的时候 结果立即进行协调 可视化的IEEE1588 在IEEE1588之前 以太网通信在控制应用中没有确定性 假设Sender发送TURN指令到Controller假设ClockS和ClockC不同步如果Sender告诉Controller收到TURN指令 然而在Controller收到TURN后无返回 SenderClockS ControllerClockC Uh oh 以太网不确定性 TURN some timelater Ok 可视化的IEEE1588 61 SenderClockS ControllerClockC Uh oh AlphaonClockS AlphaonClockC ControllerClockC Yes AlphaonClockS AlphaonClockC 即使Sender告诉Controller在一个给定的时间alpha接收TURN 这里仍然有一个时间同步问题 但是如果Sender告诉Controller在一个给定的时间alpha接收TURN 然后时钟由一个主机来同步时间 之后Controller返回TURN TURNatalpha Ok IwillTURNatalpha TURNatalpha Ok IwillTURNatalpha SenderClockS 工业应用的PTP PTP和运动控制变频驱动器需要10个微妙级软件产生5uS44 的应用需要联网 63 使用以太网TCP IPB私服控制系统需要100个纳秒需要大量的硬件支持36 的应用需要联网 56 使用以太网TCP IPCStellaris实施开源的lwIP PTPd 主时钟下500nS 误差 500nS 应用领域 需要高精度的同步级别 低速传感器 e g 压力 温度 普通的电机控制 e g 继电器 断路器 电磁阀 阀门 一般自动化 e g 材料处理 化学处理 精密运动控制 e g 高速包装 印刷 机器人 高速电子设备 e g 同步相位测量 电子测距 e g 故障检查 三角 毫秒毫秒毫秒几毫秒毫秒毫秒 Stellaris USB特点 完整的控制与物理层协议 PHY USB2 0全速 12Mbps 操作可运行于OTG Host Device或者是Host Device传输 控制传输 中断传输 块传输以及同步传输32个端点 1对端点用于控制传输 分别为IN OUT端点 15对端点可以配置成IN OUT端点4KB专用端点缓冲区 DMA 一个端点能够被定义成1023字节大小的双缓冲 Stellaris USB传输模式 1 控制 Control 方式传输 控制传输是双向传输 数据量通常较小 USB系统软件用来主要进行查询 配置和给USB设备发送通用的命令 控制传输方式可以包括8 16 32和64字节的数据 这依赖于设备和传输速度 控制传输典型地用在主计算机和USB外之间的端点 Endpoint 0之间的传输 但是指定供应商的控制传输可能用到其它的端点 2 同步 isochronous 方式传输 同步传输提供了确定的带宽和间隔时间latency 它被用于时间严格并具有较强容错性的流数据传输 或者用于要求恒定的数据传输率的即时应用中例如执行即时通话的网络电话应用时 使用同步传输模式是很好的选择同步数据要求确定的带宽值和确定的最大传输次数 对于同步传输来 说即时的数据传递比完美的精度和数据的完整性更重要一些 Stellaris USB传输模式 3 中断 interrupt 方式传输 中断方式传输主要用于定时查询设备是否有中断数据要传输 设备的端点模式器的结构决定了它的查询频率 从1到255ms之间 这种传输方式典型的应用在少量的分散的 不可预测数据的传输 键盘 操纵杆和鼠标就属于这一类型 中断方式传输是单向的并且对于host来说只有输入的方式 4 大量 bulk 传输主要应用在数据大量传输传输和接受数据上同时又没有带宽和间隔时间要求的情况下 要求保证传输 打印机和扫描仪属于这种类型 这种类型的设备适合于传输非常慢和大量被延迟的传输 可以等到所有其它类型的数据的传输完成之后再传输和接收数据 Stellaris USB引脚介绍 USB0DM数据差分线D USB0DP数据差分线D USB0IDOTG模式下用于指示处于主机还是从机模式下 USB0VBUS供USBPHY层检测VBUS电压USB0PFLT输入 作为主机时 指示外部电源错误 USB0EPEN输出 作为主机时 控制外部电源输出 Stellaris USBOTG连接图 USB作为主机时电源保护芯片 可根据需要添加 Stellaris USB框图 休息一下 15分钟 三 StellarisWare软件架构介绍 串行Flash编程图形用户界面 LMFlashProgrammingGUI简单的图形用户界面支持所有评估板主要功能包括 编程校验擦除读取BIN文件 Flash编程GUI支持 对评估板 EVM 直接编程对通过硬件间接连接的评估板 EVM 编程 USB USB 注意 目标板必须先供电 评估板可以作为JTAG接口 Driverlib驱动库使用介绍 driverlib为一个软件包 帮助我们快速开发LM3S器件 该软件包全部使用C语言编写 可以说我们只需要懂C语言 就能进行嵌入式的开发 外设驱动库 DriverLib 高级API接口快速完成外设配置免费的许可证和不需要版权费用简化和加速应用的开发可以作为目标程序库和源文件支持编译器包括ARM Keil IAR CodeRed 和GNU工具包括Stellaris图形库和StellarisUSB库在有些StellarisMCUs外设驱动库函数被预置到ROM中 外设驱动库组织结构 StellarisWare 包含硬件相关的头文件 默认 包含外设相关定义必要的类型定义宏定义 StellarisWare driverlib 包含 c 源文件和头文件包含外设特有的功能为了编译驱动所需的编译器特有工程文件编译器特有的输出目录和文件 即实际每个编译器所需的库文件C StellarisWare driverlib ewarm IARC StellarisWare driverlib gcc CodeRedC StellarisWare driverlib rvmdk KeilC StellarisWare driverlib sourcerygxx CodeSourceryC StellarisWare driverlib ccs CodeComposerStudio Stellaris图形库特点 Stellaris图形库是一套免专利费的基本图元和小控件集 能够在基于Stellaris微处理器且带有图形显示器的电路板上创建图形用户界面 图形库由三个功能构建层组成 一 显示驱动层 针对使用的显示屏驱动程序 二 基本图元层 可在能实现无抖动工作的活动显示缓冲或屏外缓冲中绘制点 线 矩形 圆形 字体 位图影像以及文本等 三 控件层 支持复选框 按钮 单选按钮 滑块 列表框以及一种或多种基本图元的通用包络 可在显示屏上绘制用户界面元素 并能根据用户与小控件元素的互动提供应用定义的响应 图形库 使用Stellaris微控制器来设置基本图形元素和部件三层功能函数 显示驱动层基本图形层控件层 应用 接口选择 并行 显示控制器芯片通常支持的并行接口为8 16位6800或8080兼容接口 优点 由于是并行传输 速度快缺点 资源消耗大 需要较多引脚例子 EK LM3S3748 DK LM3S9B96 所有的RDK IDM板子 StellarisMCU GPIO EPI DisplayControllerIC Case1 Displayw integratedcontroller Case2 Discretecontroller display OR 图形库 显示驱动层 该图形库可在任何位置显示 任意大小 当然在合理范围内 唯一的限制是颜色深度 最多24位色的RGB 使用的基本图形结构描述显示 以找出如何对它说话 此结构包含 如宽度显示的基本信息 高度 决定显示方向 如单个像素绘制 多个像素绘制 基本任务函数绘制水平 垂直线 矩形填充颜色 颜色翻译从24位RGB 以显示特定的颜色 并刷新缓存 如果一个显示控制器不支持的图形库 建立一个具有上述功能的驱动程序 将使其能够与图形库使用 图形库 基本图形层 基本图形 点 线 矩形 圆 字体 图像 文本 缓冲区可用现代计算机的134种预定义的字体高达24位色彩 GraphicsLib提供150种常见的颜色方便引用 该控件库使用基本图形构造部件例如 一个复选框使用长方形 字体和行原语 矩形绘制的容器 绘制的 X 为40 30行 并填入对应的字体和文本这可能使调用基本图形层 例如 制订静态文本或图像 但如果应用程序部件为基础 因此没有必要的 图形库 控件层 内置图形控件层 包括 画布 复选框 容器 按钮 单选按钮 画框 列表框该按钮和滑块控件的外观 可定制任何图像 该框架还允许小部件 为你定制需要原本不存在的部件 一种实用工具 pnmtoc 在StellarisWare提供帮助的PNM格式转换图像到C的数组 可以链接到应用程序 用户申请定期服务的队列调用WidgetMessageQueueProcess 的部件信息 未经处理的队列 变化不会显示在屏幕上 应用程序代码 部件处理程序 中断服务等 可以通过调用WidgetAdd 或WidgetRemove 来添加和删除控件 也可以通过使用WidgetMessageQueueAdd 来处理邮件 以太网帧结构 帧时序同步 指示帧开始1010 1011 目标地址 LSB 单个地址0多播地址1 源地址 字段的值大于1500为类型 CRC 32算法 14字节 TCP IP分层结构 链路层 网络层 运输层 应用层 物理层 数据链路层 网络层 运输层 会话层 表示层 应用层 Iso7层结构 TCP IP5层结构 各种协议所在的层 应用层 DHCP DNS FTP HTTP IMAP4 IRC NNTP XMPP POP3 RTP SIP SMTP SNMP SSH TELNET RPC RTCP RTSP TLS andSSL SDP SOAP GTP STUN NTP etc 传输层 TCP UDP DCCP SCTP RSVP ECN etc 网络层 IP IPv4 IPv6 OSPF IS IS BGP IPsec ARP RARP RIP ICMP ICMPv6 IGMP etc 数据链路层 Ethernet 802 11 WLAN 802 16 Wi Fi WiMAX ATM DTM Tokenring FDDI FrameRelay GPRS EVDO HSPA HDLC PPP PPTP L2TP ISDN ARCnet LLTD etc 物理层 Ethernetphysicallayer Twistedpair Modems PLC SONET SDH G 709 Opticalfiber Coaxialcable etc 各种协议所在的层 LwIP uIP协议栈 由AdamDunkels开发LwIP比uIP完整uIP比LwIP更精小TI提供以上的两个开源协议栈的移植范例 Eth应用例程 Quick Start使用lwIPTCP IP协议栈作为DHCP客户端 即动态获取IP地址基本web服务器网页Web服务器游戏使用Java技术展示简单的web控制 Eth应用例程 ENET IOWeb服务器基本IO控制使用lwIPTCP IP协议栈作为DHCP客户端展示两种web控制技术HTTP请求CGI SSIHTTPD Eth应用例程 ENET lwIP使用lwIPTCP IP协议栈作为DHCP客户端服务器网页有两种来源SD卡检查SD卡是否存在从SD卡中读取服务器网页片内flash中片内flash中存在web服务器网页 Eth应用例程 ENET uIP使用uIPTCP IP协议栈DHCP获取IP地址静态网页 USB标准 标准USB1 1定义为主机 host 或者从机 device 速度可达12Mbits sec最大输出电流500mA 启动最大100mA USB2 0速度高达480Mbits sec增加OTG模式USB3 0速度高达4 8Gbits sec新型的连接器独立收发线 USB协议的层次 物理层 USB总线接口 发送和接收数据包 中间层是底层数据接口和USB设备端点之间的路由 负责传输数据到USB端点上 应用层提供USB设备类 比如鼠标 大容量存储器等 USB协议物理层 连接类型USB比特率USB高速比特率为480Mb sUSB全速比特率为12Mb sUSB低速比特率为1 5Mb s四线 ID线USB2 0USB信号 USB协议中间层 USB模式 USBDevice大部分的USB产品是从机 USBHost通过用于PC机 嵌入式处理器也可以做 USBOTGOn The Go单个端口可以用作主机或从机 根据ID线的状态区分 就是说根据连接线区分 USB端点 IN OUT控制 同步 批量 中断USB类每种类对应于某一种产品 比如鼠标等 USB描述符 EndPoints EP Hostcontroller USB设备 逻辑通道 Rx Tx Rx USB设备描述符 给出了设备的版本信息 PID VID等 一个USB设备可以有一个或者多个配置描述符 每个配置描述符可以有一个或多个接口 每个接口可以有多个端点 设备描述符厂商ID 产品ID支持的设备类配置描述符最大功耗接口数接口描述符端点数USB类代码端点描述符 传输模式 速度 端点地址传输类型最大数据包大小 USB协议中间层 数据流 枚举过程 在设备上电的时候 主机轮询每个设备 并获取设备的信息 描述符 包括以下 设备描述符 厂商ID 产品ID 用于帮助主机查找驱动 配置描述符 功耗和接口描述符 端点描述符 传输类型和速度 握手 数据 USB协议中间层 数据包 USB协议顶层 端点EP 逻辑通道 Rx Tx Rx 物理层 USBVID授权 VID 定义一个USB设备生产厂商 PID 给定VID下不同的产品 每个USB设备都需要VID每个VID代表一个公司 可以使用TI的VID 并向TI申请一个指定的PID Stellaris解决方案 设备API函数 鼠标 键盘 文件系统 USB设备类驱动API函数 HID 大容量存储器 USB主机控制器API函数USB硬件驱动库 USB驱动库 综合子集的USB功能简化嵌入式USB控制提供给客户免费的应用软件 使用StellarisMCUs来快速开发USB 可获得的例程 从机例子 HID键盘HID鼠标CDC虚拟串口大容量存储器 如U盘 普通批传输 bulk 音频设备设备固件更新示波器主机例子 大容量存储器HID键盘HID鼠标OTG例子 SRP 检测请求协议 HNP 主机协商协议 USB IF认证StellarisMCUs已经通过USB从机和嵌入式主机认证测试TI许可StellarisVID PIDs给客户使用 WindowsINF支持类Windowsdrivers基础驱动程序设定配置字符串设定PID VID预编译的DLL缩短开发时间USBLib提供设备程序框架 USBDevice例程 Audio将开发板作为一个USB音频类设备16为立体声 48KHz采样速率 耳机音量控制使用的是同步传输模式HIDKeyboard将开发板作为一个键盘可以输出字符 支持USB远程唤醒使用的HID 人机接口类HIDMouse将开发板作为一个鼠标可以发送x y坐标值 按钮状态展示HID人机接口类MSD展示了大容量存储器类 将开发板作为一个U盘显示当前可以进行的操作读 写 空闲 无媒体 断开连接使用SD卡作为媒体介质支持FAT文件系统Serial展示了CDC类 将开发板作为一个虚拟串口需要Windows inf file USBHost例程 Mouse展示支持USB鼠标显示鼠标数据 连接状态按键状态光标Keyboard展示支持USB键盘显示键盘数据 显示CAP状态在屏幕上输出按键MassStorage展示支持大容量存储器 四 基于LSDEV 3S5956开发板的现场动手实验 LM3S5956开发板特点 32位ARM CortexTM M3v7M架构 工作频率为80MHz 36个中断 具有8个优先级USB2 0全速OTG端口 可以设置成Host Device OTG内置256KB大容量单周期Flash高达64KB单周期访问的SRAM最高工作频率可达80MHZ集成板载仿真器 使用FT2232和CPLD芯片LC4032 可对主芯片实时仿真 并且提供对一个外部芯片仿真接口集成一个虚拟串口 通过FT2232 1个CAN2 0A B控制器ROM中内置StellarisWare LM3S5956开发板实物图 供电仿真USB接口 FTDI虚拟串口 EEPROM 供FTDI存储数据 CPLD 用于仿真调试M3 CPLD烧写程序JTAG口 4个用户LED灯 LM3S5956主芯片 Reset按键 引出接口 3 3VLDO 自锁按键 用于切换USB总线供电 用户按键S1 用户按键S2 OTGUSB接口 LM3S5956开发板系统框图 开发板自锁按键 首先需要说明的是 本开发板设置了一个自锁按键 这个自锁按键用于切换系统供电和总线供电 就是说在按键松开的状态时 开发板通过供电 仿真USB接口P6供电 此时系统可以用于USB从机 USB主机 可以对外部供电 如果这个按键处于按下状态时 此时系统通过OTG接口P7供电 只能当做从机 不能用于做主机 这里使用时需要将自锁按键处于松开状态 自锁按键 开发环境搭建 实验不是必须 首先当然是要安装开发环境 因为我们这里的例程均是Keil的工程 因此我们就应该首先安装Keil 具体安装文件在Tools 使用工具 V1 0 Keil MDK V4 03目录下 具体安装使用方法详见DOC目录下的 Keil4 02实验指导书 当然 我们也可以使用IAR编译 以上版本的Keil是30天限制版的 注意 当然我们开发板出厂程序已经包含以下的三个实验 因此可以不用下载 直接进入实验 出厂程序为Code LSDEV 3S5956 V1 0 LSDEV 3S5956 V1 0 test 实验一 GPIO闪灯程序 单独GPIO例程所在目录 LSDEV 3S5956 V1 0光盘 Code LSDEV 3S5956 V1 0 LSDEV 3S5956 V1 0 gpio blinky此时可以看到LED1闪烁 以下具体介绍这个闪灯程序 程序使用的端口为PB4 LED1 注意 当然我们开发板出厂程序已经包含以下的三个实验 因此可以不用下载 直接进入实验 出厂程序为Code LSDEV 3S5956 V1 0 LSDEV 3S5956 V1 0 test 初始化和配置 配置系统主时钟 使用外部晶振16MSysCtlClockSet SYSCTL SYSDIV 1 SYSCTL USE OSC SYSCTL XTAL 16MHZ SYSCTL OSC MAIN 使能端口PB 然后配置PB 4为输出SysCtlPeripheralEnable SYSCTL PERIPH GPIOB GPIOPinTypeGPIOOutput GPIO PORTB BASE GPIO PIN 4 相关API函数介绍 系统时钟设定 SysCtlClockSet unsignedlongulConfig 例如 SysCtlClockSet SYSCTL SYSDIV 1 SYSCTL USE OSC SYSCTL XTAL 16MHZ SYSCTL OSC MAIN 这条语句用于设定系统使用外部16MHZ晶振作为系统时钟 不使能PLL 系统分频为1分频 那就是说系统时钟为16MHZ 如果想要开启PLL 则可以使用以下语句 SysCtlClockSet SYSCTL SYSDIV 4 SYSCTL USE PLL SYSCTL XTAL 16MHZ SYSCTL OSC MAIN 这条语句用于设定系统使用外部晶振16MHZ作为PLL输入 然后PLL输出4分频后作为系统时钟 由于PLL输出为200MHZ 因此系统时钟为50MHZ 相关API函数介绍 使能GPIO 通常Stellaris系列ARM所有片内外设只有在使能以后才可以工作 否则被禁止 暂时不用的片内外设被禁止后可以节省功耗 GPIO也不例外 复位时所有GPIO模块都被禁止 在使用GPIO模块之前必须首先要使能 例如 SysCtlPeripheralEnable SYSCTL PERIPH GPIOB 使能GPIOB模块配置GPIO为输入 输出 特殊功能 例如 配置端口PB4为输出端口GPIOPinTypeGPIOOutput GPIO PORTB BASE GPIO PIN 4 驱动LED的闪烁 驱动LED的闪烁while 1 置PB 4为高电平GPIOPinWrite GPIO PORTB BASE GPIO PIN 4 GPIO PIN 4 延时500msSysCtlDelay 500 SysCtlClockGet 3000 置PB 4为低电平GPIOPinWrite GPIO PORTB BASE GPIO PIN 4 0 延时500msSysCtlDelay 500 SysCtlClockGet 3000 相关API函数介绍 GPIO端口读写函数 对GPIO管脚的读写操作是通过函数GPIOPinWrite 和GPIOPinRead 实现的 这是两非常重要而且很常用的库函数 GPIOPinWrite 函数向所选GPIO端口的指定管脚写入一个值 以更新管脚状态 GPIOPinRead 函数读取所选GPIO端口指定管脚的值 比如 GPIOPinWrite GPIO PORTB BASE GPIO PIN 4 GPIO PIN 4 这条语句用于设定端口输出 这里是设定端口PB4 然后最后一个参数用于设定输出高电平 还是低电平 如果是端口号 则设定为高电平 如果是0 则设定为低电平 实验二 UART回发程序 单独UART例程所在目录 LSDEV 3S5956 V1 0光盘 Code LSDEV 3S5956 V1 0 LSDEV 3S5956 V1 0 uart int echoUART回发 然后打开Tools 使用工具 V1 0 串口通讯助手目录下的sscom32 exe 选择FTDI产生的虚拟串口 这个之前在安装驱动的时候讲过 设定波特率为115200 数据位为8 停止位为1 校验无 这时我们在字符输入框中输入字符串并发送 开发板接收到数据后会发回 因此可以在串口调试助手中的接收区可以看到接收到发送的数据 初始化和配置 配置系统主时钟 使用外部晶振16MSysCtlClockSet SYSCTL SYSDIV 1 SYSCTL USE OSC SYSCTL XTAL 16MHZ SYSCTL OSC MAIN 使能Uart引脚 PA0 PA1 SysCtlPeripheralEnable SYSCTL PERIPH GPIOA 配置引脚为Rx Tx功能GPIOPinTypeUART GPIO PORTA BASE GPIO PIN 0 GPIO PIN 1 使能Uart时钟SysCtlPeripheralEnable SYSCTL PERIPH UART0 初始化和配置 配置uart0的参数115200 8位 1个停止位 无校验UARTConfigSetExpClk UART0 BASE SysCtlClockGet 115200 UART CONFIG WLEN 8 UART CONFIG STOP ONE UART CONFIG PAR NONE 使能接收中断和接受超时中断UARTIntEnable UART0 BASE UART INT RT UART INT RX 启动UartUARTEnable UART0 BASE 使能Uart中断IntEnable INT UART0 相关API函数介绍 UARTConfigSetExpClk 用来对UART端口的波特率 数据格式进行配置voidUARTConfigSetExpClk unsignedlongulBase unsignedlongulUARTClk unsignedlongulBaud unsignedlongulConfig ulBase UART端口的基址 取值UART0 BASE UART1 BASE或UART2 BASEulUARTClk 提供给UART模块的时钟速率 即系统时钟频率ulBaud 期望设定的波特率ulConfig UART端口的数据格式 取下列各组数值之间的 或运算 组合形式 UARTEnable 使能指定UART端口的发送和接收操作voidUARTEnable unsignedlongulBase 相关API函数介绍 UARTIntEnable 使能指定UART端口的一个或多个中断voidUARTIntEnable unsignedlongulBase unsignedlongulIntFlags UARTIntClear 清除指定UART端口的一个或多个中断voidUARTIntClear unsignedlongulBase uns
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部门级安全培训材料课件
- 【高考模拟】2026届普通高等学校招生全国统一考试最 新 数学模拟试卷3(含解析)
- 海藻酸盐包装力学优化-洞察及研究
- 部署消防安全培训课件
- 遨游汉字课件
- 2023-2024学年广州市东江外语实验学校八年级(下)第一次限时训练物理试题
- 2025年广东省广州市中考物理三轮冲刺《机械运动》
- 国际标准体系差异对出口型刨刀产品认证成本的结构性挤压效应
- 口腔解剖变异区域刮治效率提升的3D打印定制化工具设计
- 反向刮水器总成在极端环境(-40℃至85℃)下的热应力变形补偿机制
- 初中班级管理课件
- 住房公积金稽核管理办法
- 颈椎病术后护理常规
- 结肠癌和直肠癌中西医结合诊疗指南
- 2025年电信项目管理工程师考试试题
- 2025年AI应用正当时详解AI应用开发新范式报告-阿里云
- 《高速铁路动车组辅助设备维护与检修(第2版)》课件 任务三四 CRH380B型动车组车门系统
- 单梁吊培训课件
- 语言技术对社会语言的影响-洞察阐释
- 抑尘网抑尘效果的风洞试验方法研究
- 2025至2030中国纳米纤维材料行业产业运行态势及投资规划深度研究报告
评论
0/150
提交评论