刚得到一块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中文手册: |
点赞 |
stm8就可以了吧 |
【MCU实战经验】STM32F030芯片极限超频测试
【STM32F0开发日志】+STM32F030 修改官方提供的例程
【STM32F030开发日志/评测/笔记】+(2)STM32F0处理器I2C实例(...
STM32F030F4核心板自己整理的几个程序可以当模板参考(Keil MDK...
CubeMX之STM32F0 UART DMA接收的bug
【STM32F0开发日志】STM32F030 TIM3 4路PWM 输出
stm32f030的i2c(eeprom)调试分享
STM32F030F4P6 PWM输出呼吸灯
【实战经验】STM32F030低温下RTC不工作
STM32F042Nucleo Mbed PWM+L298N驱动12V直流电机