在线时间1258 小时
UID3174487
注册时间2015-10-31
NXP金币2015
TA的每日心情 | 开心 2025-5-29 08:54 |
---|
签到天数: 2992 天 连续签到: 8 天 [LV.Master]伴坛终老
金牌会员
 
- 积分
- 12035
- 最后登录
- 2025-5-29
|
1.接上一篇帖子,这次我们读取板子上自带的电位器的电压值在OLED上显示出来。我在这块儿调试OLED的时候吃了大亏,搞了一个下午示波器、逻辑分析仪都用上了最后发现是一个低级的错误。我用的OLED的SPI通信模式,除了SPI的SCK和MOSI外还需要三个GPIO来控制RES、DC、CS当时为了图省事就近原则,没有看原理图就把RES DC CS依次连接到P0_23 P0_22 P0_21上边,结果可想而知了怎么调试都不通,最后每个端口写了个点灯的程序用逻辑分析仪一看,是P0_23问题,再回过头看原理图原来P0_23接的电位器。 血淋淋的教训呀,好在及时发现问题了下边操作就简单了。
- #include "mbed.h"
- #include "oled.h"
- AnalogIn ain(P0_23);
- DigitalOut myled1(P0_7);
- DigitalOut myled8(P0_18);
- Serial uart(P0_4,P0_0);
- //MOSI MISO SCK SSEL
- SPI oled(P0_26,P0_25,P0_24,P0_15);
- DigitalOut oled_res(P0_22);
- DigitalOut oled_dc(P0_21);
- DigitalOut oled_cs(P0_20);
- char string[30]={"hello NXP!!!"};
- char str[15]={};
- float str1;
- int main() {
- uart.baud(115200);
- wait(0.2);
- OLED_Init();
- OLED_Clear();
-
- while(1) {
- OLED_ShowString(0,0,string,16);
- sprintf(str,"ADC = %5d",ain.read_u16());
- OLED_ShowString(0,2,str,16);
- sprintf(str,"V = %2.2f",ain.read_u16() * 3.3 / 65536);
- OLED_ShowString(0,4,str,16);
- myled1 = 1;
- myled8 = 0;
- wait(0.2);
- myled1 = 0;
- myled8 = 1;
- wait(0.2);
- }
- }
复制代码
上个效果图,转动电位器会显示ADC的值和对应的电压值。没想到这次在这么一个小问题栽了跟头,看来还是自己不够细心呀。
|
|