-
楼主,请问问题解决了么?如果没解决,方便给我看一下你的link文件
-
jianhong0425 发表于 2015-7-21 09:27
你好,谢谢你的讲解,我还有一个问题想请教一下,就是如果设置FS为+-4.096V其手册上对应的增益为1,那么 ...
参考下面从datasheet里面截图关于full scale的说明,为1时是正负4.094V,但是不会超过你的VIN。
-
所以要转存在SD卡里,然后再后期可以再处理分析数据
-
本帖最后由 msp430_now 于 2015-7-22 00:11 编辑
和鼠标,调试软件没关系,时钟没设置好,或者有错误,所以闪烁不是很稳定。
-
楼主请看下面的简图1。Y轴是16位的数字代码最大值为0x7FFF,即32768. X轴是电压的变化。
由于采样值和实际输入值存在线性关系,即 采样值(sum)/ 最大采样值 (32768) = 输入电压(real)/ 最大参考电压值 (2.731V)
所以你最后算出的电压值就等于 real = sum * 2.731 / 32768。这里为了提高计算精度,可以向把2.731扩大1000倍,计算后再缩小1000倍即可。
你的programmable gain amplifier (PGA)设置的是2/3,所以你当输入电压为3.3V时你的最大参考电压是2.731V。
-
检查时钟
-
我用的C#,JAVA也可以,网上有很多这样的例子,API也很好学
-
我建议是编一个串口的通讯程序,然后将你的txt文件里面的数据以特定的协议分段以数据包的形式发入单片机。
单片机接收到每个数据包并验证数据后写入SD卡内,同时返回串口程序一个成功的回馈,此时串口程序继续发送下一个数据包,直到数据全部发送并成功写入。
-
是在主机(电脑之类)存了一个大数组,想通过单片机中转然后写入SD卡里面么?
-
如果领导懂技术,那就是大幸,他知道哪些项目的哪些难点,这样会让技术人员专注于自己的工作,在客服技术难点的过程中得到管理层理解和帮助。如果他不懂技术。。。
-
给我看一下你的link文件
-
夏沫86 发表于 2015-7-14 11:26
是用了很大的数组
应该是溢出了,你可以调试到溢出的那一步,看看你的memory地址,主要看ram里面的stack。
-
ADC10CTL0 |=ENC+ADC10SC; //开始转换
上面这句话的意思是ADC转换开始,此时ADC的中断程序ISR被触发
while((ADC10CTL0 &ADC10IFG)==0); //等待ADC10IFG标志变高(转换完成)
ADC10 interrupt flag. This bit is set if ADC10MEM is loaded with a conversion result. It is automatically reset
when the interrupt request is accepted, or it may be reset by software. When using the DTC this flag is set
when a block of transfers is completed.这句话我觉得没必要,你是在等ADC10MEM载入值,个人觉得可以不要。
ADC10_Result+=ADC10MEM; //读取采样结果
读取采样结果可在ISR程序中使用,你要求平均值的话最好用数组或者指针来赋值。
-
你的boot区的boot jump to app的向量指向哪里的?83FF还是F7FF?
-
你是在调试的时候step to step发现的吧?
你用了很大的数组或者用了memcpy之类的库么?
-
LPM0: CPU and MCLK are disabled
请问CPU和时钟都休眠了,你如何运行采集?
results[0] = ADC12MEM0;
LPM0_EXIT;
这两个的顺序也不对,中断唤醒后要先退出睡眠模式,再赋值。
-
SYW 发表于 2015-7-12 10:19
啊谢谢。中断处理没贴不是因为涉密,因为除了显示就是ADC的转换例程,觉得应该不会有错。
结合版主在其 ...
两个问题:第一,Port的中断内要清零IFG,不然你只能触发一次。
第二,全局中断不需要如此频繁的开启,特别是在中断中还要启动全局中断。我在此理解为你想要实现循环嵌套,但是实际,并未有任何的作用。
楼主,这个项目虽然很简单,但我希望你可以从程序架构开始出发,尽量是你的程序思路清晰。不知道你可否有时间绘制一张主程序流程图,从程序架构开始进行设计和优化。
-
SYW 发表于 2015-7-10 09:39
谢谢,其实差不多啦,我的想法是直接在ADC转换的中断响应里把显示数值的部分加上去,同时语音芯片报出读 ...
可以的,你可以使用callback,一旦你的adc得到了正确的值,就呼叫语音芯片报值,同时产生一个enable。
你不用使用循环嵌套,timer的中断可以作为计时器使用,在某个时间节点后,发生变化,这个应该会很容易实现。
-
TI自己的BSL局限性太多了,要特定的引脚,最坑的是这两个引脚很多时候并不是uart的引脚。而且,你还要按TI的BSL的协议发送数据,太麻烦了。都到量产了,bootloader是必须的,因为很多产品要封装,还有些会在PCB表片喷涂树脂。没有bootloader就无法实现程序的升级。
-
量产最好是自己做一个bootloader,用串口发送程序,isp编写。前提是你要有一定的汇编基础和c基础,还要对Flash内的地址分配和link有一定了解。