书接上文,是对官方项目的解读,有点长,没看完。
一般下载的官方文件有一个这样的文件夹,这个是官方的评估板的API。
作用
EVAL就是评估的意思
common是通用驱动的意思,每个包里面都有
就写一个最早的日志
其实还有各种各样的板子
16年的电路板
事实上这个板子还更早。。。
发现一个以前的开发工具
它产生的工作文件
库的封装
Libraries/CMSIS:与片内寄存器相关,有代表性的如下:
stm32f10x.h 外设头文件
system_stm32f10x.h STM32时钟配置
core_cm3.h 内核寄存器映射
Libraries/STM32F10x_StdPeriph_Driver:与外设相关,有代表性的如下:
|-misc.h 外设对内核中的NVIC 的访问
|-stm32f10x_adc.h ADC(模数转换)库函数
|-stm32f10x_bkp.h bkp()
|-stm32f10x_can.h can(CAN总线)
|-stm32f10x_cec.h cec
|-stm32f10x_crc.h crc
|-stm32f10x_dac.h dac(数模转换)
|-stm32f10x_dbgmcu.h dbgmcu
|-stm32f10x_dma.h dma(DMA)直接存储器访问
|-stm32f10x_exti.h exti 外部中断事件控制器
|-stm32f10x_flash.h flash
|-stm32f10x_fsmc.h fsmc
|-stm32f10x_gpio.h GPIO(引脚口)
|-stm32f10x_i2c.h IIC(IIC总线)
|-stm32f10x_iwdg.h iwdg(独立看门狗)
|-stm32f10x_pwr.h pwr(睡眠模式)
|-stm32f10x_rcc.h rcc
|-stm32f10x_rtc.h rtc(实时时钟)
|-stm32f10x_sdio.h sdio
|-stm32f10x_spi.h spi(SPI总线)
|-stm32f10x_tim.h TIM(滴答时钟)
|-stm32f10x_usart.h USART(串口通信)
|-stm32f10x_wwdg.h wwdg(窗口看门狗)
src:一些启动项目,比较重要的有:
main.c 主函数
startup_stm32f10x_hd.s 启动文件
stm32f10x_conf.h 包含所有的 .h 文件
stm32f1xx_it.c 与中断向量有关
system_stm32f10x.c 上面介绍过了相关的 .h 与 系统时钟相关
这个地方是LCD 的接口定义
再把我们的应用手册看一次
避免这种ESD,使用了一个专用的芯片
这是作用
就是这样的
HDMI又使用了一个电源IC
提供5V的电压
我们的主角真好看
CEC分外的好看
这个接口的定义是定义再主板上面的
HDMI CEC IIC的引脚
分的很细,CEC的控制,以及CEC源设备的控制IIC
可以看到是链接到了,固件库的位置上面,仔细地读源码,可以对设计理解的很深入。
但是有的引脚是这样的,我不太理解
在应用之前会进行参数的校验
GPIO_Pin_n可以理解为某端口脚在整个端口的位置。比方某GPIO口的第6管脚位置编码GPIO_Pin_6 被定义为 ((uint16_t)0x0040) ,在对相应GPIO管脚做基本属性配置时会用到,如配置输入输出模式、模拟输入模式的选择等。
而GPIO_PinSourceN一般是在对某GPIO口相应pin脚的复用功能进行选择配置才会用到。它是根据端口各脚位的位置按顺序从0开始依次递增编号,可以理解为该管脚在该端口的序号。比方某GPIO口的第6号复用功能脚的序号GPIO_PinSource6 被定义为 ((uint8_t)0x06) 。
搞不懂了。。。
出现了这个会被转换成下面的样子:
这是它的意思。
挂在AHB上,AHB的基地址在:
这里
最终在这里
最终在CMSIS的定义文件里面了,这也复习了一下库的封装。
继续看库里面的东西:
CEC的根地址是从0x00开始的,如果想配置的时候,就改这个地方。
DDC通路,大致是个IIC接口,读取上游器件的EDID或者E-EDID数据;
就是沟通显示器的样子
和IIC的区别
协议的定义
是否打开自动读取的功能
终止功能的原因
CEC的功能,62个~
HPD热拔插的检测功能,装在一个宏里面
作用是这样的
参数是先知道主的GPIO位置,接着往下排布
置位的函数,给了一个基地址,一个位置。
后面就是函数的签名。
函数可能会返回的错误类型、
这个是CEC结构的一个封装
对一些宏的保护,写了这个
一些要使用的变量
DDC是读取哪个显示器的信息
CEC的信息结构体长这样
cec读取到的位置,就是这里面的一个
还有128位的EDID,我代码就传到Github了,大家自己看
三个函数的签名。
下面就啰里啰唆的东西了。
初始化CEC的功能
引脚的模式
速度
上拉还是下拉
末尾会有这个
对参数进行校验
对一个引脚可以配置的选项都打包在这里
CEC的初始化
如果上面又这个宏打开的话就设置新的时钟。
自己看,可以看桥接的APB来
设置函数
是否使能
APB1时钟
都会做参数的校验
重启和时钟控制
CEC在APB上,开启,以及把引脚的时钟打开。
CEC使用的引脚
后面GPIO是初始化
关闭也简单
CEC也和IO的初始化一样
下篇继续,读不动了。
热拔插的检测引脚,一对
最后是实际的CEC接口
这是设备的种类
https://wenku.baidu.com/view/541672decbd376eeaeaad1f34693daef5ef71317.html
————————————————
版权声明:本文为CSDN博主「time_train」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/time_trip/article/details/118786437
https://item.szlcsc.com/10394.html#pdf-view
https://www.st.com/zh/microcontrollers-microprocessors/stm32f051r8.html#st_circuit-diagram_sec-nav-tab
https://www.st.com/en/evaluation-tools/stm320518-eval.html
https://www.st.com/en/evaluation-tools/stm32-eval-boards.html#cad-resources