在线时间216 小时
UID2029919
ST金币0
蝴蝶豆0
注册时间2013-7-31
金牌会员
- 最后登录
- 2020-7-18
|
a0a.1 32b0c
刚得到一块STM32F030的Discovery板,和F4的Discovery相比,这块板子比较小巧,最近正在研究mbed,正巧看到mbed的库函数里支持STM32F030的Discovery板,就已测试了一下这块板子。紧接着上一章,讲到了mbed的SPI,主要使用了一下几个函数:
SPI Lcd_5110(SPI_MOSI, SPI_MISO, SPI_SCK); 启用了一个SPI,对应的管脚可以在PinNames.h这个文件里面找到(管脚分配都在这里面)
Lcd_5110.frequency(10000000);设置SPI的时钟(一目了然)
Lcd_5110.write(Data);
Lcd_5110.write(CommandByte);这是操作lcd5110的两个底层函数,发送命令和数据(都使用了mbed的spi写函数),非常简单
改完这两个底层函数之后就可以用在以前stm32f1系列操作lcd5110的驱动上,而且可移植性非常强(我已经将其直接copy到f072、l053,可以完美运行),这应该就是mbed的关键所在吧。
尽然是温度计,温度传感器必不可少,正好手上有一块从TI申请的TMP275(精度相当高),这块温度传感器使用了I2C的接口,虽然说ST的I2C有BUG,但是我这次用mbed操作了一次,没有出现什么BUG,相当顺利,mbed的I2C主要使用下面几个函数:
I2C i2c(I2C_SDA, I2C_SCL);和上面的SPI一样,启用一个I2C(具体是I2C几, 可以根据引脚查)
Init_status= i2c.write(TMP275_WRITE_ADDR, data_write, 2, 0);很清楚,I2C的写函数,TMP275_WRITE_ADDR是器件地址,TMP275比较特殊,有一个读 地址,还有一个写地址(我把TMP275的A0、A1、A2全部拉倒地了,所以写地址是0x90,读地址是0x91,具体看TMP275的手册,在末尾会贴出来),data_write就是寄存器地址,2就是data_write的长度,0代表不重发,具体看库函数,注释的很清楚。
i2c.read(TMP275_READ_ADDR, data_read, 2, 0); I2C的读函数,和上面一样,读出来的数据存在data_write中
还有几句转换温度数据的式子(没考虑负温度,实际可以测量出来的)就不在这里详细介绍了!
最后在调试过程中需要把浮点数转换成字符显示,使用了sprintf函数时,小数点总是莫名其妙的变成其他字符,最后果断放弃sprintf,找来以前的一个浮点转字符串的函数,上一张图吧,做的比较简陋(直接用杜邦线连的)“℃”没有取模直接用’C代替了...!
TMP275中文手册:
tmp275.pdf
(1.11 MB, 下载次数: 71)
|
|