6765|12

85

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【AT32F421测评】+ ADC采样及SPI_OLED显示 [复制链接]

 
 

这篇文章将来测评AT32F421的硬件SPI和12位的ADC,首先,硬件SPI将以SPI_OLED的形式来呈现,ADC通过测试实际的电压来测试。

我选用的OLED是市面上常见的0.96寸OLED,它支持I2C和SPI接口,我将用AT32的硬件SPI将其驱动,同时作为ADC测到的电压值的显示屏。

首先,因为市面上用0.96寸的OLED的人很多,所以一些开发者或商家就编写其的通用驱动,为了提高开发效率,避免重复造轮子,我选用某园的驱动,它提供了非常多的例程,我就在其基础上修改。

首先,在HARDWARE文件夹中新建SPI.c、SPI_OLED.c 、ADC.c等三个C文件及其对应的h头文件。然后在FWLIB中添加at32f4xx_spi.c、at32f4xx_adc.c和at32f4xx_dma.c如下图所示

第二步,将某园的模拟SPI驱动复制到SPI_OLED.c,同时将

OLED_WR_Byte,也就是写入一个字节的函数修改为下图所示,将软件模拟的传输过程用硬件SPI的发送函数SPI_I2S_TxData来代替发送.

因为SPI_OLED上还有DC和RST引脚,这里我分别用PA6和PA4来代替,如下图所示,

其他的驱动函数不用修改。

第三步,配置AT32F421的硬件SPI,首先在SPI.c中的添加如下函数,以便在主函数中调用(参考官方提供的BSP中AT_START_F421中的Simplex_Interrupt示例).这里需要注意的是,第一,我们要用SPI,要进行GPIO配置,SPI对应时钟和GPIO对应时钟配置,还有就是SPI参数配置;第二,根据0.96寸OLED所使用的SSD1306驱动芯片的SPI接口的时序图,时钟初始电平可高可低,然后在上升沿的时候传输数据,所以我这里通过SPI_InitStructure.SPI_CPOL = SPI_CPOL_LOW;初始电平配置为低电平;然后通过SPI_InitStructure.SPI_CPHA = SPI_CPHA_1EDGE;将其配置为第一个边沿变化传输,也就是上升沿.(这里补充一点,可能是个人对时序图的理解有误,在CPOL和CPHA不是配置为上面的配置时,在进行实验后似乎也是可以驱动的,但我的建议是最好配置为上述的配置),具体配置如下图所示

第四步,配置ADC,这里参考官方提供的BSP中AT_START_F421中的ADC1_DMA示例,这里我只讲重点,具体配置见附件,这里的测出来ADC数据是通过DMA搬运到某变量数组里的,通过DMA_InitStructure.DMA_MemoryBaseAddr=(uint32_t)ADC_RegularConvertedValueTab;

DMA_InitStructure.DMA_BufferSize         = 1;

 

将测出来的电压搬运到ADC_RegularConvertedValueTab这个数组里面,

然后,我将依次测试ADC测量外部电压和内部参考电压.

下面这么写是测量ADC1的通道1的外部电压值,也就是PA1的外部值

ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239_5);

//测试通道1 PA1

下面这么写是可以测量内部参考电压

ADC_RegularChannelConfig(ADC1,ADC_Channel_Vrefint,1,ADC_SampleTime_239_5);//测试内部参考电压

记得添加上下面这句,这个是使能ADC测量内部温度传感器和参照电压的函数

/* Enables Temperature Sensor and Vrefint Channel */

ADC_TempSensorVrefintCtrl(ENABLE);

最后,在主程序中写入如下函数,单片机将1s的刷新速度更新采集到的实际电压值,这里需要进行一个转化,ADC_RegularConvertedValueTab[0]*3282/4096.0;这条语句中的3282就是代表我用万用表测到的单片机的工作电压为3282mv,不同情况下该电压值可能会不同,这个是需要修改的.

最后展示一下实际测量结果,先测量一下单片机内部的参考电压,根据数据手册,此参照电压应该在1.20V附近

实际测量为1.206V,符合标准

接下来测试不同电压值,经过和四位半的已校准的万用表进行对比,AT32F421的ADC还是非常可靠的 ,精度很高

本次对AT32F421的ADC和SPI测试完毕

AT32_ADC_and_SPI_OLED.zip

12.86 MB, 阅读权限: 10, 下载次数: 21

最新回复

下载不了呀  详情 回复 发表于 2023-6-29 23:12
点赞(2) 关注(2)
 
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

能和四位半的已校准的万用表进行对比精度,测试成功

 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

看来这芯片ADC模拟部分做的挺好的。响应速度呢?

点评

这个倒是还没测  详情 回复 发表于 2021-5-9 17:55
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

71

帖子

2

TA的资源

一粒金砂(中级)

4
 

写的很详细啊,谢谢楼主的分享。

 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(高级)

5
 
freebsder 发表于 2021-5-6 16:23 看来这芯片ADC模拟部分做的挺好的。响应速度呢?

这个倒是还没测

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 

为什么下载不了

 

 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

7
 

怎么下载不了呢

点评

nmg
说的是帖子里的附件吗,我刚下载正常,你再试试?  详情 回复 发表于 2021-6-11 08:07
 
 
 

回复

5220

帖子

236

TA的资源

管理员

8
 

说的是帖子里的附件吗,我刚下载正常,你再试试?

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(高级)

9
 

有阅读权限 10

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

10
 

写的很好

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

11
 

怎么不好下载了??

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 

下载不了附件

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
下载不了呀
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表