使用MAXQ2010评估板读取温度

本应用笔记演示了maxq微控制器应用开发的简便性,并提供了iar嵌入式工作台®集成开发环境和maxq®评估(ev)板。演示简单开发过程的最简单方法是使用示例应用程序。本应用使用maxq2010 risc微控制器上的uart、定时器和adc来监视和报告温度。
应用概述
本文描述的示例应用使用maxq2010处理器和maxq2010评估(ev)板。本例展示了微控制器的uart、集成adc控制器和器件定时器的用途。定时器用于每 500ms 生成一次中断。maxq2010端口与adc接口,用于数据采集。然后通过将热敏电阻连接到maxq2010的adc来获取温度读数。当发生中断时,maxq2010获取温度读数,并将结果输出到其串行端口之一。
读取 adc 数据
在示例应用中,adc控制器读取随温度变化的模拟输入。在读取任何输入之前,应用必须设置adc的时钟、转换模式(单路或连续)、基准电压源(内部、外部或avdd),以及感兴趣源的输入通道。需要初始化几个寄存器才能实现adc转换。
void initadc ( ){ adcn = 0x00; // single conversion, external avdd reference, divide-by-1 clock frequency. adst = 0x10; //select configuration register - read/write access on addata. addata = 0x00; //channel 0 for an0. addata = 0x01; //channel 0 for an1. addata = 0x02; //channel 0 for an2. addata = 0x03; //channel 0 for an3. addata = 0x04; //channel 0 for an4. addata = 0x05; //channel 0 for an5. addata = 0x06; //channel 0 for an6. addata = 0x07; //channel 0 for an7, thermistor is attached on this channel. adaddr = 0x07; //selecting 0x07 as the last conversion configuration register.}
初始化后,设置adst寄存器的adconv位将启动转换。硬件通过清除相同的位来指示转换完成。要读取结果,请将adst寄存器的adidx[3:0]位设置为目标输入通道。然后,addata寄存器将保存相应通道的数字数据。在本示例应用中,an7 被分配给 adc 数据缓冲器 7。因此,要读取热敏电阻数据,请设置 adst = 0x07 并读取 addata。 对读取的数字值执行以下步骤以达到温度:
unsigned int getadcreading(){ unsigned short data = 0; adst_bit.adconv = 1; //enable conversion. while( adst_bit.adconv == 0x01 ); //adst.adconv bit indicates conversion in progress. adst = 0x07; //we are interested in reading only the an7 input, that is thermistor data. data = addata; //read an7 data. return data;}
计算 an7 处的模拟输入,以伏特为单位,对应于读取的数字值。
计算与an7处模拟输入相对应的热敏电阻电阻。
以摄氏度为单位计算温度。
写入串行端口
在示例应用中,maxq2010的一个串行端口用于输出当前温度读数。在将任何数据写入端口之前,应用程序必须设置波特率和串行端口模式。只需初始化几个寄存器即可启用串行端口通信。
void initserial(){ scon0_bit.sm1 = 1; // set to mode 1. scon0_bit.ren = 1; // enable receives. smd0_bit.smod = 1; // set baud rate to 16 times the baud clock. pr0 = 0x75f7; // set phase for 115200 with an 8mhz crystal. scon0_bit.ti = 0; // clear the transmit flag. sbuf0 = 0x0d; // send carriage return to start communication.}
在uart中,单个寄存器发送和接收串行数据。写入 sbuf0 寄存器将启动传输。当串行端口上的数据可用时,读取 sbuf0 寄存器将检索输入。 示例程序使用以下函数将数据输出到串行端口。
int putchar(int ch){ while(scon0_bit.ti == 0); // wait until we can send. scon0_bit.ti = 0; // clear the sent flag. sbuf0 = ch; // send the char. return ch;}
使用计时器生成周期性中断
此示例应用程序中使用的最后一个组件是 16 位计时器之一。定时器生成中断,每秒触发两次温度读数。要为此示例配置计时器,程序员必须设置重新加载值,指定时钟源,然后启动计时器。以下代码显示了初始化计时器 b 所需的步骤。
tb0v = 0x00000; // set current timer value.tb0r = 0x0f42; // set reload value.tb0cn = 0x0506; // set timer clock = sysclk/1024, reload timer mode, interrupt enabled.
使用此计时器作为此示例的中断源还需要执行几个步骤。maxq架构的中断必须在三个级别上启用:全局、每个模块和本地。使用 iar™ 编译器,通过调用函数启用全局中断。此功能可有效设置中断和控制 (ic) 寄存器的中断全局使能 (ige) 位。由于定时器b0位于模块4中,因此设置中断掩码寄存器(imr)的位4以启用模块的中断。通过在定时器b控制寄存器(tb0cn)中设置启用定时器b中断(etb)位来启用本地中断。这些步骤如下所示。 最后,使用中断需要初始化中断向量。iar 的编译器允许为每个模块使用不同的中断处理函数。为特定模块设置中断处理程序需要使用 #pragma 向量指令。中断处理函数声明前面还应带有 __interrupt 关键字。示例应用程序通过以下方式声明模块 4 的中断处理程序。
__enable_interrupt()tb0cn = 0x506; // enable interrupts along with setting timer clock and run timer.imr |= 0x10; // enable the interrupts for module 4.#pragma vector = 4__interrupt void timerinterrupt(){// add interrupt handler here.} maxq2010评估板和iar ide设置
运行示例应用程序需要以下设置。
maxq2010评估板应具有:
a. ju14 和 ju22 短路以启用通道 an7 上的热敏电阻读数。
b. ju9 引脚 2 和 3 短路以启用 uart0。
c. ju8开路,让8mhz晶振源控制器。
iar ide 项目选项应具有:
a. lnkmaxq2010.xcl 作为链接器命令文件(从“项目”菜单中选择“选项”,然后从“类别”列表中选择“链接器”,然后选择“配置”选项卡)。
b. maxq2010.ddf 作为设备描述文件(从“项目”菜单中选择“选项”,然后从“类别”列表中选择“调试器”,然后选择“设置”选项卡)。
c. jtag作为驱动程序(从“项目”菜单中选择“选项”,然后从“类别”列表中选择“调试器”,然后选择“设置”选项卡)。
d. comx端口设置以与jtag通信(从“项目”菜单中选择“选项”,然后从“类别”列表中选择jtag)。
电脑超级终端设置应具有:
a. pc comx端口,maxq0的uart2010连接到该端口。
二。配置属性为 115200 波特率、8 个数据位、1 停止位以及无奇偶校验和流量控制。
该样应用使用maxq iar嵌入式工作台v2.12a进行了测试。
图 1
显示了预期的输出。
图1.示例应用程序输出。
结论
如这些代码示例所示,通过学习几个外设寄存器的细节,程序员能够轻松开发maxq2010微控制器和maxq系列处理器的应用。iar 嵌入式工作台的添加允许使用符合 ansi 标准的 c 代码编写代码,从而加快了开发过程。在此处下载此示例应用程序的完整源代码。阅读代码开头的说明和注释,了解有关所需设置和 iar 编译器版本的详细信息。


STM32端口复用和端口重映射?什么是端口复用重映射?
靠追踪肌肉识别表情的耳机
苏州将落地推进自动驾驶的规模化商用
小米云服务图片智能转 PDF 功能即将上线
基于ANSYS的流体流动状态分析
使用MAXQ2010评估板读取温度
全新MiRFleet软件及多元化MiR自主移动机器人(AMRs)产品
空中签名 用手势代替密码的安全科技
选购纽扣电池座时需要关注哪些性能?
深爱半导体:扎根技术开拓进取
WIPO公布与苹果AR/VR相关的新专利,可根据会话环境智能转录
一块弯曲的墨水屏?北京DASUNG大上科技发布全球首款25.3英寸曲面墨水屏显示器Paperlike U
安森美半导体扩展图像传感器阵容 包括高端监控的商业及军事应用
苹果供应链神话褪色 国产手机背后的中国力量强势崛起
“韩国年内最大IPO”上市,首日股价翻倍!
建一个完整的移动直播系统至少要做到这几点
利用剑桥1号超级计算机加速合成大脑3D图像的创建
iQOO推出搭载Pixelworks技术的iQOO 8系列高端旗舰手机,畅享视觉盛宴
热点 | Honeywell正式回应
升压恒流芯片H6911特性介绍