你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32F030-Discovery】基于mbed平台(IAR编译器)简单温度计

[复制链接]
晓枫VS枯叶 提问时间:2014-12-16 22:16 /
       刚得到一块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代替了...!
1418738803747.jpg
TMP275中文手册: tmp275.pdf (1.11 MB, 下载次数: 71)
1 收藏 1 评论2 发布时间:2014-12-16 22:16

举报

2个回答
沐紫 回答时间:2014-12-17 08:57:02
点赞
戏子薄情 回答时间:2018-10-8 17:45:03
stm8就可以了吧  
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版