当前位置:硬件测评 > stm32 mipi DSI 读取

stm32 mipi DSI 读取

  • 发布:2023-10-10 14:01

stm32 mipi DSI 读取

如何配置 MIPI DSI 时钟和 PCLK

RK 在为 MIPI DSI 配置 LCD 时有两个时钟,rockchip、dsi_hs_clk 和时钟频率。
文件如下:
disp_mipi_init: mipi_dsi_init{
兼容 = "rockchip,mipi_dsi_init ";
rockchip,screen_init = <1>;
rock芯片,dsi_lane = <4>;
rockchip,dsi_hs_clk = <348>;
rockchip ,mipi_dsi_num = <1>;
};
disp_timings: display-timings{ 本机模式 = <&timing0>;
兼容=“瑞芯微,displatimings”;
timing0:timing0 {
屏幕类型=;
lvds格式=;
out-face = ;
时钟频率 = <58200000>;
hactive = <480>;
vactive = <1280>;
hback-porch = <160>;
h前廊 = <160>;
v后门廊 = <10>;
v前廊 = <12>;
hsync-len = <24>;
vsync-len = <2>;
hsync -活动 = <0>;
vsync 活动 = <0>;
去活动 = <0>;
pixelclk 活动 = <0>;
交换-rb = <0> ;
swap-rg = <0>;
s wap-gb = ​​<0>;
};
};
有些人可能不知道如何设置这两个值,设置错误会导致显示异常。这里简单解释一下:
clock-Frequency:
即DCLK(点时钟),PCLK(像素时钟)。
clock-frequency = (h_active + hfp + hbp + h_sync) * (v_active + vfp + vbp + v_sync) * fps
厂家给出的参考值为58.2MHz,则fps为:
fps = 58200000 / (480 + 160 + 160 +24) * (1280 + 12 + 10 + 2) = 54Hz
PCLK不能太大,Android支持不超过60fps。
PCLK不能太小,否则屏幕刷新率会
rockchip,dsi_hs_clk:
即每个 MIPI 数据通道的传输速率。
dsi_hs_clk = ((h_active + hfp + hbp + h_sync) * (v_active + vfp + vbp + v_sync) * fps * bpp) / Lane_number
这里是:
dsi_hs_clk = ((480 + 160 + 160 +24) * (1280 + 12 + 10 + 2) * 54 * 24) / 4 = 348136704 bps = 348 Mbps
hs_clk 不能太小,太小会显示灰屏,太小会造成偏移。
hs_clk不能太大,否则屏幕会出现条纹。
RK文档提到dsi_hs_clk需要加100。我追踪了源代码,但没有成功。可以被看见。
另外,我实际测试了其中一个屏幕,发现最终的数值还是不一样。我不知道为什么。
顺便说一下,MIPI DSI 的上升沿和下降沿都可以发送数据。 ,所以
MIPI CLK Lane * 2 = MIPI DATA Lane
测量时,请注意 MIPI DSI CLK Lane 的时钟速率会慢一倍。

最近开始研究mipi协议dsi接口,有谁能给我一些建议吗

1。 MIPI DSI
DSI:displa串行接口,显示串行接口。 1个时钟通道,1个或多个数据通道

DSI分层结构:
图1

2. MIPI DSI协议
引入的数据包格式分为短包和长包,短包为4字节,长包为6~65541字节。无论短包还是长包,DI(数据标识符)都是第一个字节。 ? ,一个16位字计数(WC:字计数)和一个8位ECC。 DI由数据VC(虚拟通道)和特定应用负载数据DT(数据类型数据累加类型)组成。 WC 指定标头和尾部之间的数据有效负载中的字节数,不包括标头和尾部。 ECC(Error Correction Code)可以检查数据包头中DI和WC的一位错误,并可以检测两位错位。

在数据包标头的末尾,接收器然后读取数据有效负载块中的数据有效负载(数据的 WC 字节)。
(2) 具有可变字节数的特定于应用程序的数据有效负载 与特定应用程序相关的可变数量的字节和数据
(3) 16 位数据包页脚
数据包页脚仅具有16 位校验和(checksum)

接收器读取 Data Payload 后,会读取数据包页脚中的 Checksum。校验和
由主机处理器计算并传输。需要注意的是,如果Data Payload为0字节,则计算出的Checksum为0xFFFF。如果不计算校验和,则数据包尾部由 0x0000(2 个字节)组成。
2.2 短数据包格式
图 3
短数据包由 3 部分组成:
(1) 一个 8 位数据 ID
(2) 两个(命令或数据)字节
(3) 1 个8位ECC
没有包尾,短包长度固定为4字节。

2.3 常见数据包元素

2.3.1 数据标识符字节(dataidentifierbyte)
任何数据包的第一个字节是 DI 字节,它由 VC 和 DT 组成,其组成为如下图:
图4
(1)VC对应DI[7:6]
VC指定虚拟数据通道,表示最多4个。一个处理器最多可以服务4个外设(这里显示我知道了)。使用VC,可以定位不同的外设。尽管此 MIPI DSI 协议允许与多个外设进行通信,但该协议只能用于从一个主机处理器到一个外设的通信。

(2) DT 对应 DI[5:0]
指定数据类型,如 0x06,指 DCS READ,无参数。指定该数据包是长数据包还是短数据包以及数据包格式。 DT结合了WC高通接收器和这是多少字节的长数据包。这是必要的,因为没有特定的数据包开始和结束同步代码来指示数据包的开始和结束。这允许数据包传输任意数据,但仍然需要数据包头来指示指定数据包的长度。

当接收逻辑倒计时到数据包末尾时,接收器假定下一个数据是新数据包的标头或传输结束。 ?主处理器负责计算和传输ECC字节,外设支持ECC以进行前向和定向通信。

(1) ECC 规则
图 5
前 24 个数据位 D0~D23 包含完整的 DSI 头,因此校验位计算可优化为:
图 6 ?
2.4 长数据包有效负载的校验和生成
长数据包的标头受一字节 ECC 保护。为了检测长数据包传输中的错误,根据数据包的有效负载部分计算校验和。需要注意的是,零字节长度有效负载对于长数据包,其校验和为0xFFFF。

Checksuam 只能指示有效负载中出现一个或多个错误。与 ECC 不同,校验和无法修复。重复错误。因此,校验和计算对单向 DSI 实现没有影响,因为外设无法向主处理器报告错误。

stm32如何桥接mipi

使用MIPI桥接芯片将MIPI转换为并口输出,参考芯片型号TC358746AXBG。为了连接FPGA,还有一个MIPI to LVDS芯片,可以在网上找到。

以上是小编对stm32 mipi DSI读取问题及相关问题的解答。希望这个stm32 mipi DSI读取问题对你有用!

0条大师的评论

相关文章

最新资讯

热门推荐