[菜农助学交流] 【第三批】ADC通道1和VBG电源实验

[复制链接]
4198|7
 楼主| xianghou 发表于 2011-10-29 21:07 | 显示全部楼层 |阅读模式
本帖最后由 xianghou 于 2011-10-30 08:01 编辑

基于RL-RTX的ADC转换,结果通过串口发到电脑。
顺便说一下,新塘的数据手册写的真是烂到家了。翻了几遍了,愣是没找到VBG是多少

初始化代码

  1. #include "NUC1xx.h"
  2. #include "drvsys.h"
  3. #include "drvgpio.h"
  4. #include "drvuart.h"
  5. #include "drvadc.h"
  6. static void ClockInit( void )
  7. {
  8. UNLOCKREG();
  9. DrvSYS_SetOscCtrl( E_SYS_XTL12M, ENABLE );
  10. DrvSYS_SelectPLLSource( E_SYS_EXTERNAL_12M );
  11. DrvSYS_Open(48000000);  
  12. DrvSYS_SelectSysTickSource( 3 );
  13. }
  14. static void UartInit( void )
  15. {
  16. STR_UART_T sParam;
  17. sParam.u32BaudRate = 115200;  
  18. sParam.u8cDataBits = DRVUART_DATABITS_8;
  19. sParam.u8cStopBits = DRVUART_STOPBITS_1;
  20. sParam.u8cParity   = DRVUART_PARITY_NONE;
  21. sParam.u8cRxTriggerLevel = DRVUART_FIFO_1BYTES;
  22. DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC, INTERNAL_HCLK);
  23. DrvUART_Open (UART_PORT0, &sParam);
  24. DrvGPIO_InitFunction(E_FUNC_UART0_RX_TX);
  25. }
  26. static void ADCInit( void )
  27. {
  28. DrvADC_Open(ADC_SINGLE_END, ADC_SINGLE_CYCLE_OP, (1 << 1) | (1 << 7), EXTERNAL_12MHZ, 11);   //Set adc parameter
  29. DrvADC_ConfigADCChannel7( INTERNAL_BANDGAP );
  30. DrvGPIO_InitFunction(E_FUNC_ADC1);
  31. DrvADC_EnableSelfCalibration();  //start calibration
  32. while(DrvADC_IsCalibrationDone() == 0);
  33. }
  34. void SystemInit( void )
  35. {
  36. ClockInit();
  37. UartInit();
  38. ADCInit();
  39. }
  40. /* 重定向PRINTF函数到串口1*/
  41. int putchar(int __c)
  42. {
  43. if(DrvUART_Write(UART_PORT0, (unsigned char *)__c, 1))
  44.   return 1;
  45. else
  46.   return 0;
  47. }
主函数代码


  1. #include "NUC1xx.h"
  2. #include <rtl.h>
  3. #include "drvgpio.h"
  4. #include "bsp.h"
  5. #include "drvuart.h"
  6. #include "drvadc.h"
  7. #include <stdio.h>

  8. __task void ledtask( void )
  9. {

  10. for( ;; )
  11. {  
  12.   unsigned int i;
  13.   float j;
  14.   DrvADC_StartConvert();   //start first convert
  15.   os_dly_wait( 200 );
  16.   i = DrvADC_GetConversionData( 1 );
  17.   j = (float)i * 3.3 / 4095;
  18.   printf("The ADC Channel 1 Voltage:%1.3f V\n", j);

  19.   i = DrvADC_GetConversionData( 7 );
  20.   j = (float)i * 3.3 / 4095;
  21.   printf("The VBG Voltage:%1.3f V\n", j);
  22. }
  23. }
  24. __task void taskinit( void )
  25. {
  26. os_tsk_create(ledtask, 1);  //创建任务
  27. os_tsk_delete_self();   //删除自己
  28. for( ;; )
  29. {
  30. }
  31. }

  32. int main( void )
  33. {

  34. os_sys_init( taskinit ); //启动任务调度器
  35. while( 1 )
  36. {
  37. }
  38. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
dong_abc 发表于 2011-10-29 22:20 | 显示全部楼层
一如继往的顶RTX,顶楼主。
 楼主| xianghou 发表于 2011-10-29 22:25 | 显示全部楼层
一如继往的顶RTX,顶楼主。
dong_abc 发表于 2011-10-29 22:20


多谢兄弟
hotpower 发表于 2011-10-29 22:55 | 显示全部楼层
希望楼主贴出主要的代码~~~
 楼主| xianghou 发表于 2011-10-30 08:02 | 显示全部楼层
希望楼主贴出主要的代码~~~
hotpower 发表于 2011-10-29 22:55


已经贴了主要代码了
weshiluwei6 发表于 2011-10-30 11:08 | 显示全部楼层
什么是VBG啊
 楼主| xianghou 发表于 2011-10-30 13:42 | 显示全部楼层
间隙电压
linqing171 发表于 2011-10-30 16:19 | 显示全部楼层
楼上翻译的怪异。
能隙参考源。一种低精度的参考源,单片机里面集成的一般都是,BandGap Refrence。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

105

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部