From 5a5c613097fafdf5087c6e0d300692a519e95c15 Mon Sep 17 00:00:00 2001
From: Miaow <3703781@qq.com>
Date: Thu, 27 Apr 2023 17:25:19 +0800
Subject: [PATCH] =?UTF-8?q?fix(doc,drv,pl):=20=E4=BF=AE=E6=AD=A3=E4=BA=86E?=
=?UTF-8?q?NCODER=5FCR=E7=9A=84CLR=E4=BD=8D=E9=80=BB=E8=BE=91=E9=94=99?=
=?UTF-8?q?=E8=AF=AF=201.=20=E4=BF=AE=E6=AD=A3=E4=BA=86pl=5Freference=5Fma?=
=?UTF-8?q?nnual.md=E4=B8=AD=E7=9A=84=E9=94=99=E8=AF=AF=E6=8F=8F=E8=BF=B0?=
=?UTF-8?q?=202.=20=E4=BF=AE=E6=AD=A3=E4=BA=86encoder=E9=A9=B1=E5=8A=A8?=
=?UTF-8?q?=E4=B8=ADopen=E5=92=8Crelease=E5=87=BD=E6=95=B0=E5=AF=B9CLR?=
=?UTF-8?q?=E4=BD=8D=E7=9A=84=E8=AE=BE=E7=BD=AE=203.=20=E4=BF=AE=E6=AD=A3?=
=?UTF-8?q?=E4=BA=86pl=E7=AB=AFencoder=E6=A8=A1=E5=9D=97=E7=9A=84ENCODER?=
=?UTF-8?q?=5FCR=E5=AF=84=E5=AD=98=E5=99=A8=E5=A4=8D=E4=BD=8D=E5=80=BC?=
=?UTF-8?q?=EF=BC=8C=E4=BD=BF=E5=85=B6=E9=BB=98=E8=AE=A4=E4=B8=BA=E6=B8=85?=
=?UTF-8?q?=E9=99=A4=E7=BC=93=E5=AD=98=E7=8A=B6=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: lyz <1942503466@qq.com>
---
doc/pl_reference_mannual.md | 4 ++--
source/linux_driver/encoder.c | 6 +++---
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/doc/pl_reference_mannual.md b/doc/pl_reference_mannual.md
index 0681fdf..c05fbf1 100644
--- a/doc/pl_reference_mannual.md
+++ b/doc/pl_reference_mannual.md
@@ -98,7 +98,7 @@ ENCODER模块的寄存器主要有控制寄存器 (ENCODER_CR)、阀触发分频
#### ENCODER控制寄存器 (ENCODER_CR)
-偏移地址: 0x00
复位值: 0x0000 0009
+偏移地址: 0x00
复位值: 0x0000 0008

@@ -108,7 +108,7 @@ ENCODER模块的寄存器主要有控制寄存器 (ENCODER_CR)、阀触发分频
| 位3 **ICO** | 仅限内部清除缓存 (Internal Clear Only)
0: 同时允许由外部输入**Ex CLR**和清除缓存位**CLR**控制进入清零状态
清零状态见位**CLR**的描述;外部输入为高时,退出清零状态
1: 仅限内部信号清除缓存 |
| 位2 **VTS** | 内部触发信号 (Virtual Triggle Signal)
**MOD**位置1时,由软件写入,将该位信号直接充当触发信号
0: 低电平
1: 高电平 |
| 位1 **MOD** | 模式选择 (Mode)
0: 外部触发模式,外部触发编码器转动
1: 内部触发模式,软件模拟触发信号 |
-| 位0 **CLR** | 清除缓存 (Clear)
0: 正常工作
1: 清除编码和分频控制器内部的分频计数值,不影响ENCODER_VDIVRx和ENCODER_CDIVR
注意: 程序置位该位后后需再写入0,使计数器退出清零状态,正常工作 |
+| 位0 **CLR** | 清除缓存 (Clear)
0: 清除编码和分频控制器内部的分频计数值,不影响ENCODER_VDIVR和ENCODER_CDIVRx
注意: 程序清零该位后需再写入1,使计数器退出清零状态,正常工作
1: 正常工作 |
#### ENCODER阀触发分频寄存器 (ENCODER_VDIVR)
diff --git a/source/linux_driver/encoder.c b/source/linux_driver/encoder.c
index 6a964fc..f32d6f5 100644
--- a/source/linux_driver/encoder.c
+++ b/source/linux_driver/encoder.c
@@ -77,7 +77,7 @@ static struct encoder_dev encoder;
static int encoder_open(struct inode *inode, struct file *filp)
{
u32 data = readl(encoder_cr_addr);
- writel(data & ~ENCODER_CR_CLR_MASK, encoder_cr_addr);
+ writel(data | ENCODER_CR_CLR_MASK, encoder_cr_addr);
return 0;
}
@@ -95,7 +95,7 @@ static ssize_t encoder_write(struct file *filp, const char __user *buf, size_t c
u32 data;
kernelbuf_typedef kern_buf = {
- .valve_divide_value = 0,
+ .valve_divide_value = 0,writel
.camera_a_divide_value = 0,
.camera_b_divide_value = 0,
.camera_c_divide_value = 0,
@@ -142,7 +142,7 @@ static ssize_t encoder_write(struct file *filp, const char __user *buf, size_t c
static int encoder_release(struct inode *inode, struct file *filp)
{
u32 data = readl(encoder_cr_addr);
- writel(data | ENCODER_CR_CLR_MASK, encoder_cr_addr);
+ writel(data & ~ENCODER_CR_CLR_MASK, encoder_cr_addr);
return 0;
}