MSP430F4250到底能不能实现多道单次AD转换???

2019-03-24 11:22发布

或者说MSP430F4250到底有没有其他SD_A通道?
想做两路AD,可是配置寄存器时
1.MSP430x4xx user's guid 是放在一起的,在介绍SD16CCTLx寄存器第0位SD16GRP下面有一行小字:Reserved inMSP430F42x0,MSP430FG42x0…devices.不解: GRP位reserve了还如何实现多通道功能?
2.好吧 我想那不行分两次用单通道单次转换,给通道1配置成与通道0一样的,编译通不过,才发现MSP430x42x.h里也没有其他通道寄存器的宏定义。难道真的是没有其他通道?
3.我给头文件里补上后面通道的寄存器的宏定义,仿真时查看SD16MEM1,SD16MEM2……一直是65535,什么情况?
4.在中断函数里switch了一下SD16IV,发现进不去6,SD16MEM1无法赋值给变量,什么情况?

综上:请教高手:MSP430F4250到底能不能实现多道单次转换?要配置哪个关键寄存器??多谢大神指点!



附:最后改的只用通道1的子程序(如犯低级错误,还望高手勿笑,不吝赐教)

/*SD16 convert*/
void SD16_convert(void)
{
  P6SEL=0Xff;
  SD16CTL = SD16REFON;            // 1.2V ref, SMCLK
  SD16AE= SD16AE0+SD16AE1;
/*
  SD16INCTL0 |= SD16INCH0+SD16INTDLY_0;
  SD16CCTL0 |= SD16SNGL+SD16IE+SD16XOSR+SD16OSR0;
  for (i = 0; i < 0xff00; i++);           // 延时
  __enable_interrupt();                   // 开中断
  SD16CCTL0 |=SD16SC;                     //开始转换
// _BIS_SR(LPM0_bits);                     // Enter LPM0
  for (i = 0; i < 0x1000; i++);             // 延时
*/  
  SD16INCTL1 |= SD16INCH1+SD16INTDLY_0;
  SD16CCTL1 |= SD16SNGL+SD16IE+SD16XOSR+SD16OSR0;
  for (i = 0; i < 0xff00; i++);             // 延时
  __enable_interrupt();                   // 开中断
  SD16CCTL1 |=SD16SC;  
  for (i = 0; i < 0x1000; i++);             // 延时  
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
ss41605
2019-03-25 14:48
刚使用该型号芯片,遇到同样的问题,谢谢楼主的分享!!

一周热门 更多>

相关问题

    相关文章