还记得2012年初EEWORD的TI模拟芯片团购吗,我买了TMP275温度传感器芯片,终于在今天派上用场啦,哈哈!
STM32的单片机应该是目前非常普及的一款芯片了,最流行的是STM32F1xx系列的,这个目前性价比比较高,但是STM32F0xx一面世,更低的价格冲击市场,估计又能占领不少领地。而我有幸在工作中也接触2xx和4xx,我觉得这些系列之间的兼容性还是不错的,外设库都差不多,差别大一点的应该就是1xx之后的版本改进了IO口的配置方式,1xx只能选择外设模式或者IO模式/模拟输入输出,但是选择外设模式时候,并不能指定选择分配给哪个外设,这样有时候会引起冲突。2系列之后的都改进了,可以为每个引脚指定外设具体功能。如GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_1);//把PB8分配给I2C1。 4xx和0xx把IO从APB挪到了AHB上,这样好像能提高IO的速度。
对于学习STM32来说,官网的资料是必不可少的,对于初学者来说往往容易忽略,因为初学者往往比较依赖书本,对外面的精彩世界了解的少。我在学校的时候就是,经常去图书馆,而不会利用网上资源,更不知道什么论坛。当然了我在学校的时候是学习纯软件的,我在踏上了单片机这条路时,走的也非常坎坷。不过也总算走进这个大门了,既然走进来了就想走远点,希望在北京的我不会被大气毒害。单片机之间是相通的,只要掌握了一种其他单片机,那么学习STM32会非常容易。首先要掌握单片机的基本组成原理,然后是单片机各种外设如USART、SPI、I2C等接口,中断的概念等。C语言也要过关,我觉得学习C语言与单片机之间会起到一种互相促进的作用。没学过汇编的最好也要学一下汇编,通过汇编语言能看到C语言的灵魂。
单片机开始运行后,一般第一件事配置系统的时钟,在STM32中(以及其他很多单片机)不需要特别的去熟悉时钟的配置,因为在官方提供库中,这些都已经做好了,如果需要更改时钟,也只是简单的改下宏定义或者某个参数值。这样我们就可以专心致志的在主函数里实现我们的应用了。外设方面,在使用的时候我第一件事基本都是参考官方给的example,如果对外设特别陌生的话,可以先看Reference Manual,说实在的看Reference Manual真得需要一定功力,因为STM32功能太多,而Reference Manual是最权威和详细的资料,所以特别长,一般我只查找有用的部分看看。有时候调程序的时候实在调不出来了,可以看看Errata Sheet,有可能是芯片有BUG导致了什么限制。好了不多说了,说说我的温度计硬件吧!
硬件组成:STM32F030 DISCOVERY + TMP275 + 12832显示
硬件连接 :
PB8(I2C1_SCL) ------- TMP275 PIN2 SCL
PB9(I2C1_SDA) ------- TMP275 PIN1 SDA
GND ------------------- TMP275 PIN5\6\7 (A2、A1、A0)
TMP275 从设备地址为0x90,分辨率可选择配置为9-12位。具体测量结果误差不清楚,与我之前用SHT10的测量结果相比,会高出1℃。
PC6 --------------------- LCD_CS (Active HIGH)
PC7 --------------------- LCD_DATA(IN/OUT)
PC8 --------------------- LCD_SCK/DISCOVERY BLUE LED(硬件设计时没注意到,写完程序后看到通讯时led会闪)
12832为3.3V带字库版,可以显示汉字。
读写TMP275用的是硬件I2C接口,以前真没在STM32用过硬件I2C接口,有时候用到会用模拟方式实现。我对硬件I2C接口真的不怎么熟悉,I2C相对UART、SPI要复杂一些。我主要都是参考库中的历程。
上个图吧,以及我最新入手的一些板子来个合影,对于我这个穷工程师来说,最大的财富莫过于一堆板子了。这几块板子有一个共同的名字,那就是“ARM”!
以上就是想到哪儿写到哪儿,有些乱,各位见谅了!
还有一点让大家见笑,我没做过别的,最多就是温度计。我这里确实比较穷,没什么好玩的东西。
temperature.zip
(6.1 MB, 下载次数: 471)
[
本帖最后由 lcofjp 于 2013-10-27 22:31 编辑 ]