DVP摄像头可以通过UART,IIC等进行摄像头内部通讯配置摄像头参数。
TM30红外摄像头
这款摄像头可以通过串口发送命令进行摄像头参数配置。
| TM30 信号 | 单片机引脚 | 电气属性 | 方向以 MCU 为准 | 作用 |
|---|---|---|---|---|
| 控制 TX | PA2 | USART2 AF7,上拉 | 输出 | MCU 向 TM30 发配置命令 |
| 控制 RX | PA3 | USART2 AF7,上拉 | 输入 | MCU 接收 TM30 应答 |
初始化串口
USART_InitTypeDef serial = {0};
NVIC_InitTypeDef nvic = {0};
//开启时钟功能,复位USART2外设。
PeripheralEnable(PeripheralUSART2, true);
PeripheralReset(PeripheralUSART2);
//设置串口参数
serial.USART_BaudRate = 115200U; //波特率
serial.USART_WordLength = USART_WordLength_8b; //8位数据位
serial.USART_StopBits = USART_StopBits_1;// 1停止位
serial.USART_Parity = USART_Parity_No; //无校验
serial.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件流控
serial.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //串口模式,同时启用接收和发送
//初始化串口
USART_Init(USART2, &serial);
USART_Cmd(USART2, ENABLE);
//设置串口引脚复用和电气属性:USART2复用,内部上拉,GPIO高速模式,使用较低驱动强度配置
IOConfigStruct pins = MakeIOConfig(IOModeAlternate, GPIO_AF_USART2,
IOPullUp, IOSpeedHigh, IODriveLow);
IOSetup(PA2, pins);
IOSetup(PA3, pins);
//发送数据
void TM30_Uart_Write(const uint8_t *data, uint16_t length)
{
uint16_t index;
for (index = 0U; index < length; ++index) {
while (USART_GetFlagStatus(TM30_UART, USART_FLAG_TXE) == RESET) {}
USART_SendData(TM30_UART, data[index]);
}
while (USART_GetFlagStatus(TM30_UART, USART_FLAG_TC) == RESET) {}
}
//接收数据用到了环形队列
/*
* USART收到字节
* → 触发RXNE中断
* → 字节存入环形队列
* → 协议层之后慢慢读取
*/