Tivaware使用入门指导.pdf
《Tivaware使用入门指导.pdf》由会员分享,可在线阅读,更多相关《Tivaware使用入门指导.pdf(20页珍藏版)》请在冰豆网上搜索。
TIU-ProgramTivaWare基本介绍基本介绍V1.02014.9.24目录目录1TM4C12xMCU概述.21.1TM4C123x功能框图.21.2TM4C129x功能框图.32TivaWare功能简介.42.1TivaWare特性说明.42.2TivaWare目录结构.53TivaWare外设驱动库.63.1外设驱动库简介.63.2外设驱动库目录结构.73.3编程模式.73.3.1直接寄存器操作模式.73.3.2软件驱动模式.83.3.3混合编程模式.93.4使用片内ROM的函数.93.4.1直接调用ROM.93.4.2调用映射的ROM.103.5更新固件.113.5.1ROM_UpdateI2C.123.5.2ROM_UpdateSSI.123.5.3ROM_UpdateUART.123.6错误处理.133.7各个外设的使用.144TivaWare图形库.154.1图形库简介.154.2图形库目录结构.165TIUSB库.175.1USB库简介.175.2操作模式.175.3USB库目录结构.186IQMath库.197传感器库.198后记.208.1参考资料.201TM4C12xMCU概述概述TM4C12xMCU是德州仪器(TI)推出的基于ARMCortex-M4内核的嵌入式处理器,目前有两个大的子系列:
TM4C123x系列和TM4C129x系列。
TM4C123x系列系列:
USB+CANMCUTM4C123x系列MCU集成了ARM单精度浮点内核和高性能模数转换器,同时仍提供低至1.6A的低功耗模式。
TM4C123x系列具有最多40路PWM输出、大量的串行通信外设、USBOTG和两个CAN控制器,为家庭、楼宇和工业应用提供了出色的基准。
TM4C129x系列系列:
ENET+LCDMCUTM4C129xMCU是业界首款集成以太网MAC+PHY且基于ARMCortex-M4的MCU,可帮助客户创建一类全新的高度连接产品来桥接云并增强日益发展的物联网(IoT)。
TM4C129xMCU提供了多种连接选项以及片上数据保护和LCD控制器,以节约电路板空间并实现连接应用(例如,家庭/楼宇自动化网关、已连接的人机界面(HMI)、联网传感器网关及许多其他应用)。
更多详细信息请点击跳转至官网查看。
1.1TM4C123x功能框图功能框图TM4C123x系列MCU的功能框图如下所示:
1.2TM4C129x功能框图功能框图TM129x系列MCU的功能框图如下所示:
从功能框图可以看出,Tiva系列处理器拥有众多的外设模块,功能强大。
那么使用起来是不是很复杂呢?
答案是否定的,为了节省软件的开发时间,TI公司提供了专门用于TivaC系列处理器的开发组件TivaWare。
用户可以使用组件中附带的代码示例开始评估并加快开发进度,同时还提供易于使用并集成免专利费的库(外设、USB、图形)。
2TivaWare功能简介功能简介TexasInstrumentsTivaWare是针对TivaC系列微处理器的一套软件开发包。
该软件实质上是一个程序库,可以将微处理器所执行的常用基础操作指令模块化、函数化,免去了开发过程中可能出现的冗长代码和繁琐的工作,减少出错的几率,从而加快开发进程。
本节只对TivaWare驱动库做基本介绍。
如果要深入了解驱动库,请查阅TivaWare库的相关文档,这些文档存放于Tivaware安装目录下的“/docs”的目录下。
2.1TivaWare特性说明特性说明TivaWare库的一些特性总结如下:
从代码大小或执行速度上看,相对于汇编语言编写的代码,采用驱动库开发的代码并不是最高效的。
尽管驱动库的函数可以写得尽可能贴近汇编模式以提高效率,但是这样会使代码变得难以理解。
简单来说,在可接受的范围内,通过损失一些在可接受的范围内,通过损失一些代码代码空间和空间和执行执行效率,来提高程序的可读性。
效率,来提高程序的可读性。
并非所有的并非所有的Tiva外设外设功能都可以通过调用库函数来实现功能都可以通过调用库函数来实现,有些函数还是要自己写的,有些函数还是要自己写的。
驱动程序尽可能的满足外设硬件的基本功能和常见功能,对于一些较复杂的功能或者不常见的用法,驱动库并没有现成的函数可以调用。
此时,可以把现有的代码可以作为一个参考(库函数提供了源代码),在它们的基础上增加对附加功能的支持。
可通过某种方式移除可通过某种方式移除API中所有的错误检查代码中所有的错误检查代码。
这个算是一项高级功能吧,一般情况下,可以不理会。
Tivaware库提供了一种操作方式,可以将API中所有的错误检查代码移走。
因为API输入参数的错误代码等通常只在程序开发的过程中使用,在生成最终用户版本时可以把它移走来改善减小代码空间和提高运行速度。
TivaWare支持的开发工具有:
KeilRealViewMicrocontrollerDevelopmentKitMentorGraphicsSourceryCodeBenchforARMEABIIAREmbeddedWorkbenchTexasInstrumentsCodeComposerStudio所以,在Tivaware安装目录下不同的库驱动文件中,我们会看到ccs、ewarm、gcc、rvmdk四个文件夹,实际上就是存放对应的不同编译工具的链接库。
2.2TivaWare目录目录结构结构TivaWare安装完成后,默认位于C:
TiTivaWare_C_Series-2.1.0.12573。
TivaWare文件夹中包含boot_loader、docs、driverlib、examples、inc等文件夹,具体如下图所表示。
TivaWare是由多个程序库组合的一个集合,其组成框图如下:
示例代码外设驱动程序库图形库传感器库USB库数学运算库开源RTOS开源协议栈启动加载程序(BootLoader)和在线编程支持第三方工具和示例说明文档下面简单介绍下目录,强烈建议大家打开下电脑上已经安装的TivaWare目录,多熟悉下。
文件夹文件夹文件夹内的内容简介文件夹内的内容简介boot_Loader该目录包含引导加载程序的源码CC3000CC3000模块的源码和库文件,支持TM4C123和TM4C129docsTivaware文档汇集driverlib外设驱动程序库examples各种Demo板卡的例程和代码grlibTivaware图形驱动库inc包含了各型号的寄存器宏定义以及直接寄存器操作的部分宏定义IQmath包含了高精度数学运算函数库nfclib非接触式芯片TRF79xx的操作例程sensorlib常见传感器操作的函数库third_party第三方软件包,如网络协议栈,操作系统等tools一些常用的工具汇集usblibUSB驱动程序库utils该目录内包含一组使用的程序函数范例windows_drivers开发过程中的USB驱动3TivaWare外设驱动库外设驱动库3.1外设驱动库简介外设驱动库简介TexasInstrumentsTivaWare外设驱动库(TivawarePeripheralDriverLibrary)是用来访问ARMCortex-M内核的Tiva系列处理器外设(外设是相对于处理器内核而言)的一系列驱动程序。
如果站在“操作系统”的角度,它们称不上严格意义上的驱动程序(因为这些的驱动程序没有面向操作系统的统一接口,也没有可以融入全局的驱动程序架构),但这些驱动程序确实提供了一种机制,使器件的外设使用起来很容易。
用户只需要根据外设操作的基本过程来调用相关的函数,无需了解这些操作相关的详细寄存器信息,大大降低了开发的难度。
驱动程序的功能和组织结构如下:
驱动程序全部用C编写,除了那些实在很难用C语言实现的;驱动程序演示了如何在常用的操作模式下使用外设;驱动程序很容易理解;高效,尽可能的少占用内存和处理器资源;尽可能保持函数独立性;只要可能,可以在编译中处理的计算都在编译过程中完成,不占用运行时间;支持多个工具链。
这些设计目标会得到一些以下的结果:
站在代码大小和/或执行速度的角度,驱动程序不必要达到它们所能实现的最高效率。
虽然执行外设操作的最高效率的代码都用汇编编写,然后进行裁减来满足应用的特殊要求,但过度优化驱动程序的大小会使它们变得更难理解;从这个角度出发,驱动程序的可读性和可维护性是最重要的。
驱动程序并非支持硬件的全部功能。
现有的代码驱动,只是作为一个参考,满足一些常用的功能。
但是一些外设提供的复杂功能通过驱动库中的驱动程序是不能使用的,需要自己根据实际情况编写修改代码;APIs提供了一种方法,可以移走所有的错误检查代码。
因为参数错误检查通常只在程序开发的调试阶段使用,调试完成后可以把它移走来改善代码大小和速度。
对于许多应用来说,驱动程序可以直接使用。
但是,在某些情况下,为了满足应用的功能、内存或处理要求,必须增加或改写驱动程序代码。
在这种情况下,现有的驱动程序可以用作外设操作的一个参考。
支持以下工具链:
KeilRealViewMicrocontrollerDevelopmentKitMentorGraphicsSourceryCodeBenchforARMEABIIAREmbeddedWorkbenchTexasInstrumentsCodeComposerStudio3.2外设驱动库目录结构外设驱动库目录结构Tivaware包含多个库,下面简单描述了外设驱动程序库源代码的组织结构。
这个目录结构大概了解下,要找文件时可以找得到。
EULA.txt:
包括这个软件包的使用在内的最终用户许可协议的完整文本。
driverlib/:
该目录包含驱动程序的源代码。
hw_*.h:
在inc目录下,头文件,每个外设对应一个,描述了每个外设的所有寄存器以及寄存器中的位字段。
驱动程序使用这些头文件来直接访问一个外设,应用代码也可以使用这些头文件,从而将外设驱动程序库API忽略。
inc/:
该目录保持了直接寄存器用于访问编程模块的部分指定头文件makedefs:
makefiles使用的一组定义。
3.3编程模式编程模式外设驱动程序库提供两种编程模式的支持:
直接寄存器访问模式和软件驱动模式。
根据实际应用的需要或者开发者所需要的编程环境,这两种模式可以独立使用,也可以结合起来使用。
这两种编程模式都有各自的优、缺点。
相比于软件驱动模式,使用直接寄存器访问模式能得到更少、更高效的代码。
然而,使用直接寄存器访问模式,要求使用者了解每个寄存器的含义、寄存器各字段(Bit)的含义、它们之间的相互影响,以及对一个外设进行操作时各寄存器操作的先后顺序及详细内容。
在这种情况下,如果开发者使用软件驱动模式,则不需要知道这些详细内容,可以在更短的时间内开发应用。
3.3.1直接寄存器操作模式直接寄存器操作模式在直接寄存器操作模式下,通过直接向外设寄存器写入数值的方式对外设进行编程。
TivaWare所提供的宏集大大简化这个处理过程。
这些宏存储在不同型号的头文件中,位于在Tivaware安装目录下的inc目录下。
头文件的名称必须与器件型号相一致(例如,与TM4C123GH6PM相对应的头文件为inc/tm4c123gh6pm.h)。
通过包含与某型号器件相匹配的头文件,就可以使用这些宏来访问该器件中的所有寄存器,包括这些寄存器相关的位定义。
当然,为避免不可预知的问题