[环境传感器] [X-NUCLEO-IKS01A2测评] 设计显示屏幕测试开发板信息

zhjb1   2017-9-22 16:04 楼主
本实验完成所用的Arduino兼容的STM32F410RB开发板的1路Ticker启动程序计数器,2路ADC,2路PWM测试,ADC直测,PWM测试舵机控制。下边按照程序顺序直接给出代码。
首先需要设计LCD屏幕显示的信息
屏幕为8行17.5列,第一行显示程序计数器,由Ticher中断实现程序计数器累加功能,预计2mS中断一次,计数器累加1。
第二行显示两路ADC,因为是浮点数,显示.后的4位——0.0000~0.9999。
第三行显示PWM的周期变化值,也是浮点数,显示.后的3位——0.000~0.999。
还有5行显示X-NUCLEO-IKS01A2班子的数据应该够了,不够也可以采用其它方法解决。
首先将元main.cpp复制为mainTest.cpp,打开此文档输入:
  1. //Define GPIO functions Object
  2. AnalogIn adc0(PA_0);//定义PA_0为ADC0
  3. AnalogIn adc1(PA_1);//定义PA_1为ADC1
  4. PwmOut pwm0(PA_10);定义PA_10为PWM0
  5. PwmOut pwm1(PA_8);定义PA_8为PWM1
  6. Ticker tick;//Time Interupt Clock
  7. //DigitalOut led(LED1);——因为LCD显示器用了PA_5,所以此LED会随LCD数据而闪烁
  8. Serial sout(PA_2,PA_3);//定义串口输出
  9. I2C i2c(PB_9,PB_8);//定义I2C——此次无用,仅仅是验证定义不冲突——事实如此
  10. //声明函数
  11. void dispBase(void);
  12. void dispMes(void);
  13. //DEFINE VARIABLE
  14. int32_t jsq;
  15. float val0,val1,dut0=0.330f,dut1=0.450f,ddu0=0.003f,ddu1=0.002f;
  16. int pdir0=1,pdir1=1;
  17. //Define Ticker
  18. void tipInt(void){jsq++;}
  19. //IO Initial
  20. void ioInit(void){
  21. pwm0.period(0.003f);//pwm0 Period time
  22. pwm1.period(0.004f);//pwm1 Period time
  23. }
  24. int main(){
  25. ioInit();
  26. lcdInit();
  27. lcdClear();
  28. dispBase();
  29. tick.attach(&tipInt,0.005f);
  30. sout.printf("TEST 2ADC 2PWM a LCD Display\n\r");
  31. while(1){
  32.   val0=adc0.read();
  33.   val1=adc1.read();
  34.   if(dut0>0.810f){pdir0=0;};if(dut0<0.180f){pdir0=1;}
  35.   if(pdir0==0){dut0 -=ddu0;};if(pdir0==1){dut0 +=ddu0;}
  36.   pwm0=dut0;
  37.   if(dut1>0.610f){pdir1=0;};if(dut1<0.160f){pdir1=1;}
  38.   if(pdir1==0){dut1 -=ddu1;};if(pdir1==1){dut1 +=ddu1;}
  39.   pwm1=dut1;
  40.   if((jsq/10)%10==1){dispMes();}
  41.   sout.printf("ADC1=%0.4f ADC2=%0.4f PWM1=%0.3f PWM2=%0.3f\n\r",val0,val1,dut0,dut1);
  42.   //led=!led;
  43.   wait(0.05);
  44. }
  45. }
  46. //Display Base Meseger
  47. void dispBase(void){
  48. c2l(0,0,19);c2l(1,0,28);c2l(2,0,26);c2l(3,0,40);//JSQ:
  49. c2l(0,1,10);c2l(1,1,13);c2l(2,1,0);c2l(3,1,40);//AD0:
  50. c2l(9,1,10);c2l(10,1,13);c2l(11,1,1);c2l(12,1,40);//AD1:
  51. c2l(0,2,25);c2l(1,2,32);c2l(2,2,0);c2l(3,2,40);//PW0:
  52. c2l(9,2,25);c2l(10,2,32);c2l(11,2,1);c2l(12,2,40);//PW1:
  53. }
  54. //Display Messeg
  55. void dispMes(void){
  56. c2l(4,0,(jsq/1000000)%10);c2l(5,0,(jsq/100000)%10);c2l(6,0,(jsq/10000)%10);c2l(7,0,(jsq/1000)%10);//JSQ:
  57. c2l(8,0,(jsq/100)%10);c2l(9,0,(jsq/10)%10);c2l(10,0,(jsq)%10);//JSQ:
  58. c2l(4,1,int(val0*10)%10);c2l(5,1,int(val0*100)%10);c2l(6,1,int(val0*1000)%10);c2l(7,1,int(val0*10000)%10);//ad0
  59. c2l(13,1,int(val1*10)%10);c2l(14,1,int(val1*100)%10);c2l(15,1,int(val1*1000)%10);c2l(16,1,int(val1*10000)%10);//ad1
  60. c2l(4,2,int(dut0*10)%10);c2l(5,2,int(dut0*100)%10);c2l(6,2,int(dut0*1000)%10);
  61. c2l(13,2,int(dut1*10)%10);c2l(14,2,int(dut1*100)%10);c2l(15,2,int(dut1*1000)%10);
  62. }

打开mbed_config.h文档,将里面的一串口速率的两个9600,改为115200。
编译后还是有5个告警,没有错误,下载成功后的测试结果见照片:照片31是硬件+LCD屏幕设计以及显示结果、照片32是2路PWM示波器显示结果、照片33是有串口读出的数据、照片34是其中1路PWM控制舵机的示波器放大波形、35是两路ADC测试示意图。控制1路舵机的视频见:还在转码中... ...。
  • 31
  • 32
  • 33
  • 34
  • 35
永远好心情

回复评论 (8)

感觉楼主更多是对mcu的评测内容
点赞  2017-9-25 10:40
引用: nmg 发表于 2017-9-25 10:40 感觉楼主更多是对mcu的评测内容
您好!看了Quick Start Guide手册,按照上边的介绍7步完成X-CUBE-MEMS1的下载和使用。实际上到第3步开始,就无法下载实际文件,只能是fpd文档。请问,在那里可以下载到这些文档?第二个问题是:看他的各个传感器芯片的介绍,无法理解如何控制I2C去读取数据,尝试了一个,读出的数据均为0?!也可能没有吃透芯片手册,因此进度会慢下来的。需要每个手册看完后理解了在编程读取数据。在此网站,也没有介绍用NUCLEO-Fxxx板子读取数据的实例以便参考。谢谢 顺便为了与上边的板子对齐,特意弄了一块NUCLEO-F401RE的板子,也走不下去。 本帖最后由 zhjb1 于 2017-9-25 17:08 编辑
永远好心情
点赞  2017-9-25 17:06

4楼 nmg 

引用: zhjb1 发表于 2017-9-25 17:06
您好!看了Quick Start Guide手册,按照上边的介绍7步完成X-CUBE-MEMS1的下载和使用。实际上到第3步开始 ...

问题1:X-CUBE-MEMS1的下载和使用

进入这个开发板的主页:点此进入,可取如图所示位置下载。 1.jpg

问题2:看他的各个传感器芯片的介绍,无法理解如何控制I2C去读取数据,尝试了一个,读出的数据均为0?!
发帖求助试一下,写写你具体的操作步骤和方法。


问题3:例子参考,可根据开发板的上的传感器型号,这里找找相关例程:https://bbs.eeworld.com.cn/thread-543452-1-1.html


点赞  2017-9-26 10:30
引用: nmg 发表于 2017-9-26 10:30
问题1:X-CUBE-MEMS1的下载和使用

进入这个开发板的主页:点此进入,可取如图所示位置下载。

问题2 ...

谢谢!
问题1的我上过官网,登录后可以出现您的截图,但点击后边的蓝色下载按钮,就又回到要求同意、个人信息、邮件下载的过程,我可以在试试。
问题2、我想可能是还不太理解芯片的I2C的应用功能,再看看手册后试试。
问题3、以登录过此处,看了都是MSP系列芯片的例程,可以先找一个尝试改改试试。
我也希望可以实验测试得到结果。
非常感谢!
永远好心情
点赞  2017-9-27 06:16
nmg:您好!始终无法下载X-CUBE-MEMS1,您能否给我一个呢?实际上,我想用这个试试看看效果,而后在琢磨怎么编程。先谢谢了!
永远好心情
点赞  2017-9-27 07:07

7楼 nmg 

引用: zhjb1 发表于 2017-9-27 07:07
nmg:您好!始终无法下载X-CUBE-MEMS1,您能否给我一个呢?实际上,我想用这个试试看看效果,而后在琢磨怎 ...

so easy。先登录st官网账号,点击get software-->accept-->download
文件40多M,无法直接嵌入,发你邮箱了。


建议你自己再尝试一下如何从官网下载资源,如在官网下载遇到问题,可记录一下,解决不了的,可以帮忙反馈给ST的



点赞  2017-9-27 09:49
引用: nmg 发表于 2017-9-27 09:49
so easy。先登录st官网账号,点击get software-->accept-->download
文件40多M,无法直接嵌入,发你邮箱 ...

谢谢
永远好心情
点赞  2017-9-27 15:33
玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2017-10-30 14:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复