Giter VIP home page Giter VIP logo

hitsic_module's People

Contributors

beforelight avatar ckovmk avatar jerryskywalker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

hitsic_module's Issues

关于I2C_TOOL的讨论

i2c-tool是树莓派等Linux单板机上常见的一种I2C调试工具,具备I2C设备扫描、寄存器读写等功能。
我计划编写/移植一个类似的工具。大家可以把想法写在这里。

我的另外一个想法是,仿照RT1052的FlexSPI,或者RT1052的DCD,或者是U8G2库的实现方式,创建一个通用I2C工具。这个工具接收一个由命令组成的数组,并将其转换成I2C操作。通过这个工具,我们就可以非常方便地定义I2C读写序列。这样,在使用一些不常用的I2C设备时,我们就可以根据手册直接编写I2C序列,迅速完成功能测试。

参考代码:来自U8G2项目

/* this is a copy of the init sequence for the seeed 96x96 oled */
static const uint8_t u8x8_d_ssd1327_ea_w128128_init_seq[] = {
    
  U8X8_START_TRANSFER(),             	/* enable chip, delay is part of the transfer start */
  
  U8X8_CA(0x0fd, 0x012),		/* unlock display, usually not required because the display is unlocked after reset */
  U8X8_C(0x0ae),		                /* display off */
  //U8X8_CA(0x0a8, 0x03f),		/* multiplex ratio: 0x03f * 1/64 duty */
  U8X8_CA(0x0a8, 0x05f),		/* multiplex ratio: 0x05f * 1/64 duty */
  U8X8_CA(0x0a1, 0x000),		/* display start line */
  //U8X8_CA(0x0a2, 0x04c),		/* display offset, shift mapping ram counter */
  
  U8X8_CA(0x0a2, 0x010),		/* display offset, shift mapping ram counter */
  U8X8_CA(0x0a0, 0x051),		/* remap configuration */
  
  
  U8X8_CA(0x0ab, 0x001),		/* Enable internal VDD regulator (RESET) */
  //U8X8_CA(0x081, 0x070),		/* contrast, brightness, 0..128 */
  U8X8_CA(0x081, 0x053),		/* contrast, brightness, 0..128 */
  //U8X8_CA(0x0b1, 0x055),                    /* phase length */
  U8X8_CA(0x0b1, 0x051),                    /* phase length */  
  //U8X8_CA(0x0b3, 0x091),		/* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */			
  U8X8_CA(0x0b3, 0x001),		/* set display clock divide ratio/oscillator frequency  */			
  
  //? U8X8_CA(0x0ad, 0x002),		/* master configuration: disable embedded DC-DC, enable internal VCOMH */
  //? U8X8_C(0x086),				/* full current range (0x084, 0x085, 0x086) */
  
  U8X8_C(0x0b9),				/* use linear lookup table */

  //U8X8_CA(0x0bc, 0x010),                    /* pre-charge voltage level */
  U8X8_CA(0x0bc, 0x008),                    /* pre-charge voltage level */
  //U8X8_CA(0x0be, 0x01c),                     /* VCOMH voltage */
  U8X8_CA(0x0be, 0x007),                     /* VCOMH voltage */
  U8X8_CA(0x0b6, 0x001),		/* second precharge */
  U8X8_CA(0x0d5, 0x062),		/* enable second precharge, internal vsl (bit0 = 0) */
  
  U8X8_C(0x0a4),				/* normal display mode */
    
  U8X8_END_TRANSFER(),             	/* disable chip */
  U8X8_END()             			/* end of sequence */
};

[MENU]菜单开发计划整理

菜单无法拷贝不同数据区内存储的数据

完善功能:Status变量:保存状态Flag。
新增功能:新增APP_MENU_PLUGIN插件子模块,第一个插件:CMB分区保存CmBacktrace报错信息、assert报错信息等。第二个插件:LittleRookieChess

修改逻辑:增加二级菜单能调整的有效数字位数(暂时好像做不到)

抽象显示接口
菜单显示方式更改为全缓存
GetW()
GetH()
SetPixel(x, y, value)
Update()

新增菜单全局属性Flag
选项:菜单快速调参开关等

新增类型:version显示类型

新增类型:infoType,显示一段提示语

关于LIB_IMAGE

想法是编写一套常用图像处理算法的库,计划包含以下内容:

  • 常见算子
  • 连通域。黑白连通域和彩色连通域兼容。
  • 自动阈值。简单图像统计法
  • 直方图平衡/直方图匹配
  • 镜头像差校正、周边光量校正
  • 逆透视变换

还有哪些常用的算法,可以在下面提出来。
如果有相关算法的资料、代码等,也可以贴链接。

关于SD卡和FATFS的使用方式

由于SD卡的配置及初始化过于复杂,完全留在各底层工程内可能会影响更新SDK版本的便捷性。我认为有两种解决方案:
1. FATFS跟随工程,SD卡初始化跟随模组
优点:可以利用SDK内的FATFS组件,无需手动移植,工作量小
缺点:SDK内FATFS组件版本较老,手动更新工作量大;SD卡初始化与FATFS存在较强耦合,分在底层和模组内比较奇怪。

2. FATFS和SD卡初始化均跟随模组
优点:FATFS更新简单,一次更新可覆盖全部底层;可以实现更复杂的操作,例如检测到SD卡插入即初始化并挂载,安全弹出功能,检测到SD卡拔出则卸载等。
缺点:需要手动维护。
备注:我们仍可以使用NXP自带的移植代码,但是必须自己拷贝过来使用。

编写SYS_DELAY

编写延迟模组。
该延迟模组应包含四个移植接口:设置定时器周期、启动定时器、停止定时器、查询标志位。
该模组还包含面向SYSTICK定时器的默认移植,如果SYSTICK定时器存在且未被占用,则可使用默认移植。
编写时请注意定时器溢出的情况。

[BUTTON]结构和功能优化

参考MultiButton,优化BUTTON组件:

  1. 增加按下事件、释放事件、连击事件,优化现有逻辑。(状态机)
  2. 按键中断由手动注册制改为链表注册或自动注册,无需手动声明中断服务函数。
  3. 按键注册时应能控制关注哪些事件(即提供一个事件过滤器),只对用户关注的事件触发中断。
  4. 没有等待处理的事件发生时,关闭定时中断以节约资源。 注意:这要根据用户关注的事件设置。 例如,用户仅关注按下、释放两个事件(这可能是个拨码开关),没有关注短按、长按、连击事件,则定时中断在消抖完成后即可关闭。如果所有按键都不需要定时中断服务,则应关闭定时中断服务。

APP_MENU BUG REPORT & FEATURE REQUEST

上下滚动时长按无效。
调参界面的正负号逻辑是否有问题?
测试菜单保存、读取
菜单无法拷贝不同数据区内存储的数据

K66摄像头接收器EDMADVP

摄像头驱动重构。
拆分为"配置器"和"接收器"两部分。
K66的接收器仿照1052 CSI的API编写。
面向摄像头的配置器包含一个成员函数,用于导出所需的配置结构体。
配置器包含宏:USE_KNCSI或USE_RTCSI,根据该宏切换所导出的配置结构体是K66 KNCSI的配置结构体还是RT1052 RTCSI的配置结构体。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.