你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【说出你的故事】+ STM32F4(jpglib转码内存控制&RB反转控制)

[复制链接]
周玄尊 发布时间:2016-2-1 13:55
概述:本贴主要阐述使用jpglib库进行jpg和bmp之间的解码:RAM设置和Red和Blue颜色反转两个问题。

硬件平台:
stm32f429bi

软件平台:
keil v5版本搭配STM32 CUBE库

正文:
   
    1、转码RAM控制(配置文件jconfig.h)
    stm32芯片具有LCD和DCMI等功能,可谓是十分丰富,但不具备图片硬件转码的功能,所以很多用户都使用jpglib转码,网上关于stm32使用jpglib库进行bmp和jpg之间的转换例子有很多(大多都是基于PC的应用程序,PC RAM很充足,所以移植程序大多都不考虑jpglib对内存的要求),不过在stm32f4平台上移植,要注意RAM的开销。
    这款芯片内部RAM为256kb,不过在实际使用中,因为地址不连续,我们只能选择其中的64kb(CCMRAM)或者192kb作为程序RAM(Memory mapping详见:芯片Datasheet 84页)。
    jpglib库在转码过程中,图片源文件的分辨率,直接影响解码过程中申请堆内存大小,那么申请超过实际RAM,就会导致进入硬件中断HardFault_Handler()中。
    实践中发现jpglib库对内存申请的大小,可在jconfig.h文件中有上限设置,宏定义(MAX_ALLOC_CHUNK)
    2、转码RGB控制(配置文件jmorecfg.h
    在使用jpglib bmp转jpg时有可能出现jpg的颜色反转,很多朋友自己编写算法改变bmp源文件的RGB顺序,但库已经提供了相关配置。
    #define RGB_RED        0        /* Offset of Red in an RGB scanline element */
    #define RGB_GREEN        1        /* Offset of Green */
    #define RGB_BLUE        2        /* Offset of Blue */
    如果颜色出现R和B的反转,可以如下设置,不必重新编写反转方法。
    #define RGB_RED        2        /* Offset of Red in an RGB scanline element */
    #define RGB_GREEN        1        /* Offset of Green */
    #define RGB_BLUE        0        /* Offset of Blue */


    大家需要根据程序实际情况修改。    谢谢!




STM32F429-Datasheet.jpg
jconfig.jpg
收藏 评论2 发布时间:2016-2-1 13:55

举报

2个回答
沐紫 回答时间:2016-2-1 13:58:05
不错哟,谢谢分享
周玄尊 回答时间:2016-2-1 14:00:41
沐紫 发表于 2016-2-1 13:58
不错哟,谢谢分享

也是项目中曾经遇到的问题,分享一下,谢谢!
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版