stm32f407 网上资料多吗
我想学习stm32f407芯片,功能上比stm32f103要强大,我想知道网上stm32f407的学习资料多吗,代码编写规范是不是与stm32f407一样,开发环境有什么...
我想学习stm32f407芯片,功能上比stm32f103要强大,我想知道网上stm32f407的学习资料多吗,代码编写规范是不是与stm32f407一样,开发环境有什么异同
展开
1个回答
展开全部
花了几个月的时间制作了一块STM32F407ZGT的开发板,学习并体验一下STM32F4系列的性能。在硬件方面我花了不少心思,主要为了硬件的稳定性和兼容性,另外功能要兼顾到大部分的应用,下面介绍下具体配置:
1.主芯片STM32F407ZGT6
2.128Mbit NOR_FLASH
3.256kx16bit SRAM
4.32Kbit I2C EEPROM
5.16Mbit SPI FLASH
6.24bit音频DAC(内置耳机输出放大器)
7.CAN收发芯片
8.10M/100M PHY(支持MII和RMII)
9.键盘扫描芯片(最大可扩展8x8键盘)
10.摄像头模块(OV7670),板载24M有源晶振
11.RS232收发芯片
12.自弹式SD卡接口(支持SPI模式)
13.4位拨码开关(用于启动模式选择,音频控制方式和以太网速度设置)
14.双USB口,USB-OTG-FS(有USB电源开关)和USB-HS-Device(使用内置phy,速度FS)
15.20k可调电阻和5V蜂鸣器
16.电池座(不含电池,使用电池CR2120)
17.3.2寸TFT LCD(控制器ili9320),触摸屏
这块开发板基本涵盖了STM32F407的主要应用,在调试中也遇到了不少问题,稀奇古怪的原因都有,有时间的话我想慢慢总结出来作为以后的知识积累。首先就其中调试OV7670摄像头模块的问题,在这里和大家分享一下。OV7670摄像头需要外部输入时钟,我在开发板上设置了24MHz有源晶振,然后通过2x9的2.54mm排座外接摄像头模块。如下图所示
接口连接图如下:
摄像头输出的像素时钟和HSYNC,VSYNC和数据等信号连接到407的DCMI接口。
摄像头的配置接口是SCCB,按照数据手册和相关资料中的说明,OV7670的SCCB兼容I2C接口,不过我应用407的I2C去调试的时候就是得不到应答,后来查看了一些资料,发现SCCB接口还是和I2C有些不同,除了不需要上拉电阻之外,估计还有其他电特性因素的差异,看了一些案例都是使用GPIO模拟的方式去做。后来我也试着去调了一下,结果很快就成了,终于看到了图像出来。再后来就是设置寄存器一步步将图像调正常。建议大家先将摄像头设置成彩条输出测试方式去查看显示是否正常(主要涉及寄存器0x70,0x71)。
在摄像头例程中使用的是DMA采集的方式,故需要注意的是DMA的相关设置,还有就是寄存器0x15的值,这点很关键。
/* DCMI configuration */
//DCMI捕捉模式的设置,默认是连续模式,会看到连续的移动图像
//用户在使用的时候可调整为SnapShot(抓拍),也就是单帧
DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;//DCMI_CaptureMode_SnapShot;
DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;
DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;
DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;
DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;
DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;
开发板使用的是3.2寸TFT液晶,控制器ili9320,在设置摄像头位连续捕获的方式后,在液晶屏上会看见连续而移动的图像,为了保持固定的连续图像我设置了单帧中断,可以通过不断刷新显示窗口来固定住图像,另外如果有需要的话可以添加SD存储功能和一键拍照,成为简易的相机。
/*DCMI中断处理函数,这里使用的是垂直同步中断,用户可根据需要自己调整中断的方式*/
void DCMI_IRQHandler(void)
{
if( DCMI_GetITStatus(DCMI_IT_VSYNC)!= RESET)
{
DCMI_ClearITPendingBit(DCMI_IT_VSYNC);
//LCD_WindowModeDisable();
LCD_SetDisplayWindow(239, 319, 240, 320);
LCD_WriteRAM_Prepare();
}
}
根据资料,调整OV7670内部时钟应该可以改变帧率,按照例程中寄存器列表去配置后用示波器测得帧率为15帧,然而在调整内部时钟后图像帧率(分辨率320x240)好像没什么变化,这是我比较纳闷的地方,可能需要多个寄存器的配合,这点想请教各位,有熟悉的大神麻烦讲解下。
以下是IAR和KEIL两个版本的摄像头工程文件,大家有兴趣的话可以做个参考,另外还有灵致开发板的淘宝链接网址,有需要的可以去看看。PCB打样找华强 http://www.hqpcb.com 样板2天出货
1.主芯片STM32F407ZGT6
2.128Mbit NOR_FLASH
3.256kx16bit SRAM
4.32Kbit I2C EEPROM
5.16Mbit SPI FLASH
6.24bit音频DAC(内置耳机输出放大器)
7.CAN收发芯片
8.10M/100M PHY(支持MII和RMII)
9.键盘扫描芯片(最大可扩展8x8键盘)
10.摄像头模块(OV7670),板载24M有源晶振
11.RS232收发芯片
12.自弹式SD卡接口(支持SPI模式)
13.4位拨码开关(用于启动模式选择,音频控制方式和以太网速度设置)
14.双USB口,USB-OTG-FS(有USB电源开关)和USB-HS-Device(使用内置phy,速度FS)
15.20k可调电阻和5V蜂鸣器
16.电池座(不含电池,使用电池CR2120)
17.3.2寸TFT LCD(控制器ili9320),触摸屏
这块开发板基本涵盖了STM32F407的主要应用,在调试中也遇到了不少问题,稀奇古怪的原因都有,有时间的话我想慢慢总结出来作为以后的知识积累。首先就其中调试OV7670摄像头模块的问题,在这里和大家分享一下。OV7670摄像头需要外部输入时钟,我在开发板上设置了24MHz有源晶振,然后通过2x9的2.54mm排座外接摄像头模块。如下图所示
接口连接图如下:
摄像头输出的像素时钟和HSYNC,VSYNC和数据等信号连接到407的DCMI接口。
摄像头的配置接口是SCCB,按照数据手册和相关资料中的说明,OV7670的SCCB兼容I2C接口,不过我应用407的I2C去调试的时候就是得不到应答,后来查看了一些资料,发现SCCB接口还是和I2C有些不同,除了不需要上拉电阻之外,估计还有其他电特性因素的差异,看了一些案例都是使用GPIO模拟的方式去做。后来我也试着去调了一下,结果很快就成了,终于看到了图像出来。再后来就是设置寄存器一步步将图像调正常。建议大家先将摄像头设置成彩条输出测试方式去查看显示是否正常(主要涉及寄存器0x70,0x71)。
在摄像头例程中使用的是DMA采集的方式,故需要注意的是DMA的相关设置,还有就是寄存器0x15的值,这点很关键。
/* DCMI configuration */
//DCMI捕捉模式的设置,默认是连续模式,会看到连续的移动图像
//用户在使用的时候可调整为SnapShot(抓拍),也就是单帧
DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;//DCMI_CaptureMode_SnapShot;
DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;
DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;
DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;
DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;
DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;
开发板使用的是3.2寸TFT液晶,控制器ili9320,在设置摄像头位连续捕获的方式后,在液晶屏上会看见连续而移动的图像,为了保持固定的连续图像我设置了单帧中断,可以通过不断刷新显示窗口来固定住图像,另外如果有需要的话可以添加SD存储功能和一键拍照,成为简易的相机。
/*DCMI中断处理函数,这里使用的是垂直同步中断,用户可根据需要自己调整中断的方式*/
void DCMI_IRQHandler(void)
{
if( DCMI_GetITStatus(DCMI_IT_VSYNC)!= RESET)
{
DCMI_ClearITPendingBit(DCMI_IT_VSYNC);
//LCD_WindowModeDisable();
LCD_SetDisplayWindow(239, 319, 240, 320);
LCD_WriteRAM_Prepare();
}
}
根据资料,调整OV7670内部时钟应该可以改变帧率,按照例程中寄存器列表去配置后用示波器测得帧率为15帧,然而在调整内部时钟后图像帧率(分辨率320x240)好像没什么变化,这是我比较纳闷的地方,可能需要多个寄存器的配合,这点想请教各位,有熟悉的大神麻烦讲解下。
以下是IAR和KEIL两个版本的摄像头工程文件,大家有兴趣的话可以做个参考,另外还有灵致开发板的淘宝链接网址,有需要的可以去看看。PCB打样找华强 http://www.hqpcb.com 样板2天出货
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询