打印
[Kinetis]

读书笔记/学习心得 7.ADC转换

[复制链接]
2102|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
motodefy|  楼主 | 2013-11-16 16:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
今天玩了下板子的AD模块····木有官方例程,纯手工·····
欢迎观赏。:lol

程序直接调用库函数···发现这个库写的好······坑,
主程序先试了直接初始化AD,然后直接转换,获取值后通过串口上传···研究了一会,还是出来了

上传的值
发现了点问题,在0-4096之间有点波动··难道是我的角位移传感器的问题?(一圈对应电阻的变化)
貌似以前用LPC1768没这问题···
来详解下程序
首先是初始化
void ADC_Init(ADC_MemMapPtr AdcNumber, unsigned char channel, unsigned char GreaterOrLess, unsigned int CompareValue)
看起来好长···:L,第一个变量就让我傻眼了,ADC_MemMapPtr  格式  AdcNumber 值
这个是啥···然后···只好一层层的去找,最终,找出来这样的定义
typedef struct ADC_MemMap {
  uint32_t SC1;                                    /**< Status and Control Register 1, offset: 0x0 */
  uint32_t SC2;                                    /**< Status and Control Register 2, offset: 0x4 */
  uint32_t SC3;                                    /**< Status and Control Register 3, offset: 0x8 */
  uint32_t SC4;                                    /**< Status and Control Register 4, offset: 0xC */
  uint32_t R;                                      /**< Conversion Result Register, offset: 0x10 */
  uint32_t CV;                                     /**< Compare Value Register, offset: 0x14 */
  uint32_t APCTL1;                                 /**< Pin Control 1 Register, offset: 0x18 */
} volatile *ADC_MemMapPtr;

#define ADC_BASE_PTR                             ((ADC_MemMapPtr)0x4003B000u)
只要调用ADC_BASE_PTR这个量就可以完成好多量的初始化,好方便,但是如果要修改的话···是修改这个么 ((ADC_MemMapPtr)0x4003B000u)?
求高手解答,
后面3个变量,选择ad通道,比较大于小于?,和比较的值(不初始化的选择0)。
完成初始化直接输出就好
程序就这样了。
深入的还有待研究:lol
欢迎小伙伴们进来讨论和解答啊


相关帖子

沙发
黄小俊| | 2013-11-16 17:26 | 只看该作者

使用特权

评论回复
板凳
motodefy|  楼主 | 2013-11-16 17:53 | 只看该作者
**n1131 发表于 2013-11-16 17:26

:lol

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2013-11-18 11:05 | 只看该作者
感谢楼主的分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

475

帖子

3

粉丝