kinetis KV58 ADC模块食用指南
目前暂时未实现硬件dma触发,目前使用中断软件触发dma搬运,有待进一步改进.
程序代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778int main(void) { /* Init board hardware. */ BOARD_InitBootPins(); BOARD_InitBootClocks(); BOARD_InitDebugConsole(); SIM->SCGC6 |= SIM_SCGC6_ADC0_MASK; SIM->SCGC6 |= SIM_SCGC6_DMAMUX_MASK; SIM->SCGC7 |= SIM_SCGC7_DMA_MASK; DMAMUX->CHCFG[0] = 0; DMAMUX->CHCFG[0] |= DMAMU ...
kinetis KV58 HSADC模块食用指南
时间不多,今天这个模块就简单说以下吧.
HSADC模块简单介绍kv58有adc模块,也有个人感觉功能更强大的HSADC模块.kv58拥有两个12bit的hsadc模块,最高采集速度可以到5mhz,可以采集140khz~80mhz的信号.有AB通道可以同时采集,也就是说kv58可以做到4通道同时采集.另外还有支持通道乱序扫描可以做到一次触发扫描全部16个通道,相比于adc模块需要不断触发和ping-pong采集来说,hsadc的确做得更加出色.另外,hsadc模块所有通道都支持差分输入,相比于adc只有4个通道(kv58只有两个通道)支持差分输入,配置更加灵活.此外,还有过零中断,超限中断,各种错误中断等等,也可以实现adc的比较功能.
HSADC模块结构简图
可以看出,整个结构相对于adc来说更加简洁.值得注意的是8~17通道的复用情况,需要配置相关寄存器实现复用.
HSADC软件触发中断(查询)示例主程序1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484 ...
kinetis KV58 DMA模块食用指南
NXP Kinetis系列 KV58微控制器DMA模块食用指南
本文主要以KV58为例介绍kinetis系列微控制器的DMA模块的寄存器以及配置方法.
DMA是什么 DMA全称直接内存访问(Direct Memory Access).是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载.工作过程中不需要CPU干预,也不需要像中断处理方式那样需要保留现场,恢复现场之类的麻烦事,简单理解为一条直接连通外设与RAM的硬件通道,所以DMA技术可以提高系统运行效率(即CPU可以干其他的事去,算是一种简单的并行模式吧).关于更多DMA的说明这里就不再多说,可以参考参考百度百科的说明https://baike.baidu.com/item/DMA/2385376?fr=aladdin
Kinetis的DMA对于kinetis来说,DMA主要分为两大模块
DMAMUX 直接内存访问多路复用器(Direct Memory Access Multiplexer)
eDMA 直接内存访问控制器(Enhanced Direct Memory Access) ...
ARM寄存器食用感受
ARM寄存器食用感受
最近研究NXP新推出的kinetis KV58微控制器,用的是NXP官方推出的MCUXpresso的SDK,研究后发现并没有想象的好用,故决定还是手撸寄存器好了.
MKV58F24.h首先需要关注这个头文件,该头文件中包含了KV58微控制器所有寄存器地址,是最重要的头文件.下面以GPIO为例,介绍一下撸寄存器的方法.操作每个模块主要可以分为3部分.
地址定义
寄存器结构体定义
操作掩码宏定义
此外,手册中还定义了其他内容,如中断向量表,DMA触发源表,编译器设置,版本信息等等.
地址定义1234567891011121314151617181920212223242526272829303132333435/*! * @} */ /* end of group GPIO_Register_Masks *//* GPIO - Peripheral instance base addresses *//** Peripheral GPIOA base address */#define GPIOA_BASE ...
蓝牙接收端帮助文档
新生杯智能车大赛蓝牙接收端帮助文档
写在前面
这个蓝牙接收端于蓝牙上位机配套使用,使用当蓝牙上位机发出指令后,接收程序能够分析上位机发送的信号,并且执行相关的函数
大体流程串口接收数据->将数据加入数据缓冲区->在while中一直判断缓冲区中的数据->如果有相关的指令->执行相关数据处理函数
添加源文件使用蓝牙接收端程序需要手动在工程中添加SerialPortImformation.c 和 SerialPortImformation.h 之后再include "SerialPortImformation.h"另外,因为需要使用串口,所以也需要添加串口USART相关的头文件
关于 SerialPortImformation.h123456789typedef struct{ int GoSpeed; int GoSpeedOld; int TurnSpeed; int TurnSpeedOld; uint8_t OtherInfo; unsigned char serialPortQueueBuffer[BUFFERSIZE+5]; ...
ARM weak指令巧用
利用weak指令实现只声明不定义函数直接调用不出错
近来为新生编写一个蓝牙助手的下位机,采用了类似于面向事件的编程方法吧,蓝牙消息来了就会触发事件函数,把那些复杂的判断都封装起来了,也是方便使用吧.但是有一个问题,事件函数是他们自己写,自己定义,我只是预先声明了,也调用了,但是没有定义.这样很明显是编译过不了的,而C语言又没有类似于C++虚函数一样的东西.利用ARM有的编译指令weak可以实现这个功能.
我的想法是如果使用者没有自己写事件函数,那么就执行我的报错函数,用串口输出报错信息,如果他们写了事件函数,那么就执行他们的事件函数.
而weak指令的定义为: __weak函数用于定义变量或者函数,常见于定义函数,在MDK ARM链接时优先链接定义为非weak的函数或变量,如果找不到则再链接weak函数。 正好符合我的要求.
以下是代码:
这是报错函数
12345678__weak void function1ButtonClickedEvent(){ printf("function1ButtonClicked\n"); printf(" ...
openwrt简单玩一玩
紧接着上一次试玩hiwifiOS系统,最后发现实在是不过瘾,限制太多,尤其是软件安装方面的限制,然后资料又少,受不了了,就还是刷成了正宗的OpenWrt系统.
OpenWrt版本简介刷OpenWrt之前先简单说明一下OpenWrt的版本问题吧.OpenWrt到目前为止已经有了很多个版本,目前最新的是15.05 Chaos Calmer 版本,也就是很多人口中说的CC版.另外,常见的还有Barrier Breaker 14.07也就是BB版,还有更古老一点的Attitude Adjustment 12.09也就是AA版,这些就是系统版本的区别,就跟windows7和Windows8这样的区别类似.另外,OpenWrt作为嵌入式操作系统,支持众多处理器,不同处理器架构也有不同版本.而为了在安装的时候就把常见的驱动安装进去,每个安装包都附带了驱动,所以导致不同的处理器有不同的版本.比如我这个就是使用的mt7620处理器的15.05 CC版本.而之前的hiwifiOS则是使用mt7620处理器的14.04BB版上修改而成的.除此之外,还有很多论坛上常说的openwrt PandoraBox ...
hiwifi的正确打开方式
hiwifi OS的正确打开方式
近来频繁需要下载大文件,可是无奈,校园网速度感人.想着能不能把我的路由器改造成一个下载器来下载呢.于是,就开始了我的折腾之路其实这个路由器高中就买了,当时作为家里的主力路由器,一直想折腾,不过也常常搞得网络不稳定,被家里人”投诉”了几次之后,也没有继续研究了.直到后来换了100M宽带,这个只有802.11n协议的路由器带不动了,退休下来,我才有机会仔细的研究一下
hiwifi是什么以下是百度百科的介绍:
HiWiFi是北京极科极客科技有限公司推出的一款基于国外开源代码OpenWrt的无线路由系列,全称是“极路由 HiWiFi”,简称“小极”“HiWiFi”。
我手上的这块是hiWiFi 1S-HC5661,极路由官方的第二款产品.采用联发科的MT7620A处理器,这个处理器基于mips架构,560MHz主频,不过正是因为是mips架构的原因,应用程序非常少,交叉编译环境搭建也没那么顺利(相比Qt安卓的交叉编译环境还是要好弄很多).128M的ddr2内存,16M闪存,外置16GB SD卡.软件方面,我目前使用的hiWiFi OS系统,不过看情况吧 ...
uper2018使用说明
718蓝牙助手使用说明
这篇文章主要介绍串口通信,用蓝牙实现串口通信,以及蓝牙助手的使用说明.
综述蓝牙串口基于串口通信,普通串口使用有线传输,而蓝牙串口只是用蓝牙代替了有线,来传输信号而已.单片机发送的串口信号发送到蓝牙串口模块上,然后蓝牙串口模块经过一些处理,将串口信号转化为蓝牙的传输信号使用蓝牙传输协议发送到手机上,手机上面的蓝牙,再将信号解析出来.虽然中间传输不是使用的串口传输的,但是利用蓝牙串口模块我们发送和接收却是使用的串口通信,所以我们可以忽略中间具体的传输过程.也就是说掌握了串口通信也就基本能够掌握蓝牙串口的使用了.
串口通信直接进入正题,什么是串口通信. 这一段是来自百度百科的说明: 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。同时我们之前提供的STM32资料中也有关于串口通信的说明参见说明文档中的stm32f10x系列usart模块这里我们也再简单说明一下什么是串口通信.串口通信听名字就是串起来通信,就是将数据按照一定时 ...
2017实验室经历总结
正式看之前还是放一个音乐吧,全文6000多字,废话又多,怕你们睡着了
2017年总结周子顺
时间很快,转眼间在718实验室也呆了一年了。在这一年里也经历了很多,也有很多话想对下一年的人说。这个总结我想分为几个方面。首先我想谈一谈我这一年的经历,其次我再想谈一谈刚来实验室的一些感受,然后我想再谈一谈关于参加 NXP 智能车赛和全国大学生电子设计竞赛等其他比赛的一些感想,我还想谈一谈在实验室的日常和实验室之外的一些事情,最后我还想谈一谈实验室的发展。
一年经历
首先说我的经历吧。我从小就对电子技术比较感兴趣,从小就喜欢拆卸研究各种电器,喜欢研究电脑的操作系统等。上大学前就自己修过手机屏幕和主板,制作过简单的红外遥控器,研究过Unity3D 做过游戏,学习过C++(面向过程的C++,相当于 C语言加上一些简单的 STL 算法库),搞过算法竞赛,也略微自学过 Java,研究过路由器搭建小型服务器等。还记得当时刚入学班助就向我推荐了一个“718 创新交流群“,我怀着试一试的心态加入了这个群,开启了我这大学的科创生活。之后就是参加了实验室的纳新提前批,提前批也就是3道程序题,由于之前的 ...