3124|1

192

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【TI首届低功耗设计大赛】无线能量收集(二)FR开发库函数版本 [复制链接]

 
昨天上午,本人参加这个低功耗设计大赛的第一个帖子出炉了,在此,感谢诸位同志的鼓励:sacqlonerzfqq849682862ljj3166drjloveyou
今天逛论坛的时候,有幸拜读了这篇帖子:https://bbs.eeworld.com.cn/thread-447695-1-1.html挑战低功耗 | “不要电”的环境监控,在这片帖子中,楼主zca123,提供了一颗十分有用的芯片BQ25504,这颗芯片能够以几百mV的电压启动能量收集,十分适合我这个创意,就顺手申请了样片,这两天研究下芯片手册,希望能用上。
同时,基本完成了电源管理的功能设计:
当储能单元的电量达到满额(收集能量的速率大于能量使用速率),MSP430芯片就会通过巡检电路监测到储能单元电量的大小,进而发出警报,指示灯亮,同时切断储能单元的充电电路。当储能单元的电量由满额逐渐降低,降低到MSP430规定的电压值时(可由程序设定),指示警告灯会熄灭,充电电路会再次重新连接,能量便可以继续为储能单元充电,继续收集能量。在这整个过程中智能充电模块会时时检测电路中电流数据,监测电流大小,控制能量收集模块的充放电,防止过充过放电,保护储能单元。

当多路信号同时输入时,芯片就会监测各个不同信号的大小,他们的大小确定着优先级,芯片会选择优先级高的进行充电。射频前端模块通过接收射频源发射的射频信号,然后经整流电路,升压电路,变成直流信号,再将处理后的直流信号输送到处理单元中,处理单元会将直流信号经过模数转换,然后对不同信号大小的能量:进行多射频复合式能量采集器的设计及仿真比对,较大的让其输出直接为负责供电,或者存储在储能单元中;较小的,则让其输出给低压肩动电路供电。
有了思路,接下来就是具体的实现了。
说实话,金刚狼这块板子到手已经有好长时间了,但是只是刚拿到手的时候下载了CCS中的几个EXAMPLES,今天才真正接触,实在是惭愧。
暑期搞电设的时候一直在用寄存器做有关的设计,最近学32的库函数版本,所以这次学金刚狼,也想从库函数入手。TI其实对于他的5和6系列都有相应的库函数,这里我们打开CCS。(之前已经装过了MSP430WARE这是前提)打开resource explorer

这里可以看到ti对于F5、6以及FR5、6系列提供了开发库。我们打开FR5系列的,子目录有四个:用户指南、API指南、空工程、实例工程。
因为这算的上是我的第一个金刚狼程序了,当然选择GPIO啦~
点开GPIO的第一个工程,代码如下:
  1. #include "driverlib.h"

  2. void main(void)
  3. {
  4.         //Stop WDT
  5.         WDT_A_hold(WDT_A_BASE);

  6.         //PA.x output
  7.         GPIO_setAsOutputPin(
  8.                 GPIO_PORT_PA,
  9.                 GPIO_PIN0 + GPIO_PIN1 + GPIO_PIN2 + GPIO_PIN3 +
  10.                 GPIO_PIN4 + GPIO_PIN5 + GPIO_PIN6 + GPIO_PIN7 +
  11.                 GPIO_PIN8 + GPIO_PIN9 + GPIO_PIN10 + GPIO_PIN11 +
  12.                 GPIO_PIN12 + GPIO_PIN13 + GPIO_PIN14 + GPIO_PIN15
  13.                 );


  14.         //Set all PA pins HI
  15.         GPIO_setOutputHighOnPin(

  16.                 GPIO_PORT_PA,
  17.                 GPIO_PIN0 + GPIO_PIN1 + GPIO_PIN2 + GPIO_PIN3 +
  18.                 GPIO_PIN4 + GPIO_PIN5 + GPIO_PIN6 + GPIO_PIN7 +
  19.                 GPIO_PIN8 + GPIO_PIN9 + GPIO_PIN10 + GPIO_PIN11 +
  20.                 GPIO_PIN12 + GPIO_PIN13 + GPIO_PIN14 + GPIO_PIN15
  21.                 );

  22.         /*
  23.          * Disable the GPIO power-on default high-impedance mode to activate
  24.          * previously configured port settings
  25.          */
  26.         PMM_unlockLPM5();

  27.         //Enter LPM4 w/interrupts enabled
  28.         __bis_SR_register(LPM4_bits + GIE);

  29.         //For debugger
  30.         __no_operation();
  31. }
复制代码

这里的"driverlib.h",包含了所有外设驱动,可以打开一看:
  1. #include "inc/hw_memmap.h"

  2. #include "adc12_b.h"
  3. #include "aes256.h"
  4. #include "comp_e.h"
  5. #include "crc.h"
  6. #include "crc32.h"
  7. #ifdef DRIVERLIB_LEGACY_MODE
  8.     #include "deprecated/cs.h"
  9. #else
  10.     #include "cs.h"
  11. #endif
  12. #ifdef DRIVERLIB_LEGACY_MODE
  13.     #include "deprecated/dma.h"
  14. #else
  15.     #include "dma.h"
  16. #endif
  17. #include "esi.h"
  18. #include "eusci_a_spi.h"
  19. #include "eusci_a_uart.h"
  20. #include "eusci_b_i2c.h"
  21. #include "eusci_b_spi.h"
  22. #ifdef DRIVERLIB_LEGACY_MODE
  23.     #include "deprecated/fram.h"
  24. #else
  25.     #include "fram.h"
  26. #endif
  27. #include "gpio.h"
  28. #include "lcd_c.h"
  29. #include "mpu.h"
  30. #ifdef DRIVERLIB_LEGACY_MODE
  31.     #include "deprecated/mpy32.h"
  32. #else
  33.     #include "mpy32.h"
  34. #endif
  35. #ifdef DRIVERLIB_LEGACY_MODE
  36.     #include "deprecated/pmm.h"
  37. #else
  38.     #include "pmm.h"
  39. #endif
  40. #include "ram.h"
  41. #include "ref_a.h"
  42. #include "rtc_b.h"
  43. #include "rtc_c.h"
  44. #ifdef DRIVERLIB_LEGACY_MODE
  45.     #include "deprecated/sfr.h"
  46. #else
  47.     #include "sfr.h"
  48. #endif
  49. #ifdef DRIVERLIB_LEGACY_MODE
  50.     #include "deprecated/sys.h"
  51. #else
  52.     #include "sys.h"
  53. #endif
  54. #include "timer_a.h"
  55. #include "timer_b.h"
  56. #include "tlv.h"
  57. #include "wdt_a.h"
复制代码
可以看到有很多外设,相信大家这里见名知意,这里不加赘述。
我们看程序部分,共调用了WDT_A_hold、GPIO_setAsOutputPin、GPIO_setOutputHighOnPin、PMM_unlockLPM5、__bis_SR_register、__no_operation这几个函数,后三个是用于低功耗模式以及设立调试点的,这里我们不去管他。我们看前面三个函数。
这些函数从哪边才能了解到呢?一个方法是按住ctrl用鼠标点击。还有就是在前面的resource explorer中阅读相关的说明文档了。
打开说明文档,即API帮助文档,点击modules:

选择GPIO_API就可以看到跟GPIO有关的全部库函数了:
Functions
void
GPIO_setAsOutputPin (uint8_t selectedPort, uint16_t selectedPins)
This function configures the selected Pin as output pin.  More...
void
GPIO_setAsInputPin (uint8_t selectedPort, uint16_t selectedPins)
This function configures the selected Pin as input pin.  More...
void
GPIO_setAsPeripheralModuleFunctionOutputPin (uint8_t selectedPort, uint16_t selectedPins, uint8_t mode)
This function configures the peripheral module function in the output direction for the selected pin for either primary, secondary or ternary module function modes.  More...
void
GPIO_setAsPeripheralModuleFunctionInputPin (uint8_t selectedPort, uint16_t selectedPins, uint8_t mode)
This function configures the peripheral module function in the input direction for the selected pin for either primary, secondary or ternary module function modes.  More...
void
GPIO_setOutputHighOnPin (uint8_t selectedPort, uint16_t selectedPins)
This function sets output HIGH on the selected Pin.  More...
void
GPIO_setOutputLowOnPin (uint8_t selectedPort, uint16_t selectedPins)
This function sets output LOW on the selected Pin.  More...
void
GPIO_toggleOutputOnPin (uint8_t selectedPort, uint16_t selectedPins)
This function toggles the output on the selected Pin.  More...
void
GPIO_setAsInputPinWithPullDownResistor (uint8_t selectedPort, uint16_t selectedPins)
This function sets the selected Pin in input Mode with Pull Down resistor.  More...
void
GPIO_setAsInputPinWithPullUpResistor (uint8_t selectedPort, uint16_t selectedPins)
This function sets the selected Pin in input Mode with Pull Up resistor.  More...
uint8_t
GPIO_getInputPinValue (uint8_t selectedPort, uint16_t selectedPins)
This function gets the input value on the selected pin.  More...
void
GPIO_enableInterrupt (uint8_t selectedPort, uint16_t selectedPins)
This function enables the port interrupt on the selected pin.  More...
void
GPIO_disableInterrupt (uint8_t selectedPort, uint16_t selectedPins)
This function disables the port interrupt on the selected pin.  More...
uint16_t
GPIO_getInterruptStatus (uint8_t selectedPort, uint16_t selectedPins)
This function gets the interrupt status of the selected pin.  More...
void
GPIO_clearInterruptFlag (uint8_t selectedPort, uint16_t selectedPins)
This function clears the interrupt flag on the selected pin.  More...
void
GPIO_interruptEdgeSelect (uint8_t selectedPort, uint16_t selectedPins, uint8_t edgeSelect)
This function selects on what edge the port interrupt flag should be set for a transition.  More...

下面还有函数参数的各种说明,楼主这种理解能力比较差的人阅读后也是能轻松掌握,还是十分方便的。

今天就到这边吧,明天去试一试用金刚狼驱动NOKIA5110液晶,(手头没有低功耗液晶暂且用这个代替吧QAQ)。
再次谢谢大家~

最新回复

再接再厉,分享更多精彩内容  详情 回复 发表于 2014-10-30 16:36
点赞 关注
 
 

回复
举报

6066

帖子

92

TA的资源

裸片初长成(初级)

沙发
 
再接再厉,分享更多精彩内容
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表