DRM驱动代码分析:展频 跳频

展频是什么?为什么能解决电磁干扰?

目前,在高速数据发送过程中,发送端时钟采用高频的固定时钟,会使发送的电信号能量过度集中于特定频点,导致严重的EMI(电磁干扰)问题。因此,需要时钟展频电路对时钟频率进行扩展,将发送出去的电信号能量从特定频点扩展到一个更大的频率范围内,避免能量过度集中。
来源:一种时钟展频电路及时钟展频方法

MIPI干扰可以分为两种:MIPI的时钟信号或MIPI的数据信号的倍频干扰。
展频(Spreading Spectrum Clock)是指针对某一频率的时钟信号进行调制,从而使其每一个时谐能量单体所覆盖的区域扩展到一个更宽的带宽上。
注:文字不好理解,射频De-sense简介原文中图片更容易理解。

对时钟信号进行扩展是什么意思?

展频,通常理解,就是将窄带频谱扩展为宽带频谱,让能量不集中到某一个频率点,将能量分散到多个频率点。
我们知道,时钟信号通常都是周期信号,它的频谱就是窄带的,能量集中。要想将它的频谱进行扩宽,那肯定要对时钟信号进行改造,如何改造呢?
原本的时钟信号每个周期都是一样的,周期时间长度也一样,为Tclk。我们可以对其进行微调,比如先将每个时钟周期比上一个时钟周期的时间加长一点点,累计n个周期之后,再将每个时钟周期比上一个时钟周期缩短一点点,再累计n个周期,如此循环。
这样时间一定的话,包含总的时钟周期的个数是不变的,但是里面的时钟信号的每个周期都是不一样的
————————————————
版权声明:本文为CSDN博主「硬件工程师炼成之路」的原创文章
原文链接:https://blog.csdn.net/weixin_42005993/article/details/113954587

展频有哪些参数?

软件中有两个参数可以设置,一个是扩展率(Percentage),另一个是调制频率(Modulation Frequence)。扩展率一般设置在0%-3%,调制频率一般设置在0~40Khz。
展频(SSC)的Percentage和Modulation Frequence的物理意义:
例如LVDS的时钟频率为148Mhz,SSC的Percentage设置为2%,Modulation Frequence设置为30Khz。
Percentage为2%,则LVDS的频率波动范围为(148-1.48)Mhz到(148+1.48)Mhz,也就是(146.52Mhz~149.48Mhz)。Modulation Frequence为30Khz意味着LVDS的时钟频率从146.52Mhz变化到149.48Mhz再变化到146.52Mhz,需要1/30Khz的时间。
————————————————
版权声明:本文为CSDN博主「温中志」的原创文章
原文链接:https://blog.csdn.net/wenzongzhi/article/details/128701641

一个是调制速度:就是完成一次循环的时间,也就是2n*Tclk,这个时间的倒数就是调制速度对应的调制频率。
一个是调制深度:调制后,会有最长的时钟周期,也有最短的时钟周期,它们相对原始周期长度有一个差值,这个差值除以原来的时钟周期,就是调制深度,是个百分数。
还有一个是调制方式:前说的是时钟周期长度线性增加或者减小,这种方式叫线性调制方式
————————————————
版权声明:本文为CSDN博主「硬件工程师炼成之路」的原创文章
原文链接:https://blog.csdn.net/weixin_42005993/article/details/113954587

总结:mipi的时钟信号频率是高频固定的,会带来电磁干扰。展频是改变时钟频率,使其在预设范围内变动(具体怎么变动?都是线性的?),使得频率不再是固定不变的。一般是正负3%。
改变mipi时钟信号没关系吗?
答:如果是cmd mode,TE信号才是同步信号,mipi稍微变快变慢,是导致mipi送完一帧画面后空闲时间变多变少。如果是video mode,帧率稍微多个零点几帧或1点几帧(fps*1.03),应该也没关系。

跳频是什么?为什么能解决电磁干扰?

MIPI跳频技术应运而生,其原理是:选取两组MIPI值A和B,如MIPI A是主MIPI,设备待机或正常工作时都是此频率,当手机的射频频点位于MIPI A的倍频点范围内时,则触发跳频机制,MIPI的频率跳到MIPI B频率上(B组频率选取时其倍频点避开A组频率的倍频干扰点),以避开射频频点干扰。

那频点是怎么选的?

高通ssc功能相关代码

来源:OnePlusOSS/android_kernel_modules_and_devicetree_oneplus_sm8475

- qcom,dsi-pll-ssc-en: Boolean property to indicate that ssc is enabled.
- qcom,dsi-pll-ssc-mode: Spread-spectrum clocking. It can be either "down-spread" or "center-spread". Default is "down-spread" if it is not specified.
- qcom,ssc-frequency-hz: Integer property to specify the spread frequency
	to be programmed for the SSC.
- qcom,ssc-ppm: Integer property to specify the Parts per Million value of SSC.

static int dsi_pll_5nm_vco_set_rate(struct dsi_pll_resource *pll_res)
{
	struct dsi_pll_5nm *pll;
	pll = pll_res->priv;
...
	dsi_pll_calc_ssc(pll, pll_res);
...
	dsi_pll_ssc_commit(pll, pll_res);
	/* flush, ensure all register writes are done*/
	wmb();
	return 0;
}

static void dsi_pll_ssc_commit(struct dsi_pll_5nm *pll,
		struct dsi_pll_resource *rsc)
{
	void __iomem *pll_base = rsc->pll_base;
	struct dsi_pll_regs *regs = &pll->reg_setup;

	if (pll->pll_configuration.enable_ssc) {
		DSI_PLL_REG_W(pll_base, PLL_SSC_STEPSIZE_LOW_1,
				regs->ssc_stepsize_low);
		DSI_PLL_REG_W(pll_base, PLL_SSC_STEPSIZE_HIGH_1,
				regs->ssc_stepsize_high);
		DSI_PLL_REG_W(pll_base, PLL_SSC_DIV_PER_LOW_1,
				regs->ssc_div_per_low);
		DSI_PLL_REG_W(pll_base, PLL_SSC_DIV_PER_HIGH_1,
				regs->ssc_div_per_high);
		DSI_PLL_REG_W(pll_base, PLL_SSC_ADJPER_LOW_1,
				regs->ssc_adjper_low);
		DSI_PLL_REG_W(pll_base, PLL_SSC_ADJPER_HIGH_1,
				regs->ssc_adjper_high);
		DSI_PLL_REG_W(pll_base, PLL_SSC_CONTROL,
				SSC_EN | regs->ssc_control);
	}
}

参考资料

[1]一种时钟展频电路及时钟展频方法
[2]射频De-sense简介
[3]帧率调节方法及电子设备
[4]OnePlusOSS/android_kernel_modules_and_devicetree_oneplus_sm8475
[5]展频技术是如何搞定时钟信号的辐射的
[6]展频(SSC)相关知识

拓展:

lcd的mipi驱动能力本质上是驱动电压,一般不建议修改。LP mipi的默认值是1.2V,不用变动。若要尝试通过增强HS的驱动能力来解决干扰等问题
来源:展讯mipi屏高频干扰wifi信号

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值