查了一下原理图,传感器都是共用一个IIC接口的,先把IIC接上:PC6->SCL,PD6->SDA,还有温湿度传感器的ALERT和RESET,再把 KEY接上,基本功能就有了。
打开一个窜口工具,我用的是eaglecom.exe,查看代码,在硬件初化部分void user_entry_before_ble_init(void):
// Enable UART print.
system_set_port_pull(GPIO_PA2, true);
system_set_port_mux(GPIO_PORT_A, GPIO_BIT_2, PORTA2_FUNC_UART1_RXD);
system_set_port_mux(GPIO_PORT_A, GPIO_BIT_3, PORTA3_FUNC_UART1_TXD);
uart_init(UART1, BAUD_RATE_115200);
于是,把波特率设置为115200就可以了,再复位一下开发板,正常收到窜口数据:
freqchipfreqchipfreqchipfreqchip
Firmware version is 1.0
Build date: Feb 17 2020 17:47:41
BLE Peripheral
Local BDADDR: 0xBDADD0F08010
CAPB18_id = 16
CAPB18 init Ready Reg_Meas =0xc7
cd ffffff02 14004 ffff21c2 fffff4d8 443 ffffd28a fffffffb fffff8fe
=gyroscope start=
who am i=18
All service added
Start advertising...
temperature = 30096,humidity = 59726
CAPB18_id = 16
CAPB18_PRS= 100762.71094
CAPB18_TMP= 29.85327
=skip count=0
*skip count* = 0
……
再试了一下按键,一切正常!
官方这个demo默认是显示图片,我想做一个温湿度计,开机自动显示温湿度。因为家里有好几个温湿度计,想看一下这个的准确度如何。仔细研究了一下代码,结过几次调试,最后就修改了开机时最后显示的内部:
void user_entry_after_ble_init(void)
void simple_peripheral_init(void)
在最后增加二个语句:
//OS Timer
os_timer_init(&timer_refresh,timer_refresh_fun,NULL);//´´½¨Ò»¸öÖÜÆÚÐÔ1s¶¨Ê±µÄϵͳ¶¨Ê±Æ÷
os_timer_start(&timer_refresh,1000,1);
App_Mode++;
lcd_show_logo(lcd_show_workmode[App_Mode]);
}
搞定了。
和其它的温湿度计比较一下,相差还是挺大的啊: