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

查看: 365|回复: 2

[STM32H7] JPEG 硬体解码问题

[复制链接]

4

主题

2

回帖

0

蝴蝶豆

初级会员

最后登录
2020-1-8
发表于 2019-12-10 16:08:57 | 显示全部楼层 |阅读模式
各位好,

想与各位请教,我用STM32CubeMX 建立了以FatFs 作为读取JPG档案,且用硬体解码于屏幕显示。
有参考过CubeMX的程序( STM32H743EVAL ->JPEG_DecodingUsingFs_DMA),但是似乎有些状况,不知板上是否有人遇到类似的问题?
如下
  1. /*##-8- Wait till end of JPEG decoding and perfom Input Processing in BackGround  #*/
  2.           do
  3.           {
复制代码

在do..while 部分一直不断执行无法使得 JpegProcessing_End = 1

以下为JPEG_InputHandler,一到JPEG_BUFFER_EMPTY 就 Return 0

  1. uint32_t JPEG_InputHandler(JPEG_HandleTypeDef *hjpeg)
  2. {
  3.   if (Jpeg_HWDecodingEnd == 0)
  4.   {
  5.     if(Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].State == JPEG_BUFFER_EMPTY)
  6.     {
  7.       if(f_read (pFile, Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].DataBuffer , CHUNK_SIZE_IN, (UINT*)(&Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].DataBufferSize)) == FR_OK)
  8.       {  
  9.         Jpeg_IN_BufferTab[JPEG_IN_Write_BufferIndex].State = JPEG_BUFFER_FULL;
  10.       }
  11.       else
  12.       {
  13.         Error_Handler();
  14.       }
  15.       
  16.       if((Input_Is_Paused == 1) && (JPEG_IN_Write_BufferIndex == JPEG_IN_Read_BufferIndex))
  17.       {
  18.         Input_Is_Paused = 0;
  19.         HAL_JPEG_ConfigInputBuffer(hjpeg,Jpeg_IN_BufferTab[JPEG_IN_Read_BufferIndex].DataBuffer, Jpeg_IN_BufferTab[JPEG_IN_Read_BufferIndex].DataBufferSize);   
  20.         
  21.         HAL_JPEG_Resume(hjpeg, JPEG_PAUSE_RESUME_INPUT);
  22.       }
  23.       
  24.       JPEG_IN_Write_BufferIndex++;
  25.       if(JPEG_IN_Write_BufferIndex >= NB_INPUT_DATA_BUFFERS)
  26.       {
  27.         JPEG_IN_Write_BufferIndex = 0;
  28.       }            
  29.     }
  30.     return 0;
  31.   }
  32.   else
  33.   {
  34.     return 1;
  35.   }
  36. }
复制代码
其中另一个可使得 Jpeg_HWDecodingEnd = 1 的程序
  1. void HAL_JPEG_DecodeCpltCallback(JPEG_HandleTypeDef *hjpeg)
  2. {   
  3.    Jpeg_HWDecodingEnd = 1;
  4. }
复制代码
但因未开启Callback而无法使用

有高手能相助吗?


非常感谢!
<
回复

使用道具 举报

5

主题

583

回帖

138

蝴蝶豆

金牌会员

最后登录
2020-12-8
发表于 2019-12-10 17:48:47 | 显示全部楼层
这个 JPEG_InputHandler仅仅是 写 处理;对写指针JPEG_IN_Write_BufferIndex处理限定,看不出啥来;
还应结合JPEG_OutputHandler一起看 读处理;才能了解 JPEG_BUFFER_EMPTY 的原因;
您有平台,用KEIL跟踪处理;状态变 JPEG_BUFFER_EMPTY即为断点, 应该能找到原因
回复 支持 反对

使用道具 举报

4

主题

2

回帖

0

蝴蝶豆

初级会员

最后登录
2020-1-8
 楼主| 发表于 2019-12-11 08:45:28 | 显示全部楼层
mikecai 发表于 2019-12-10 17:48
这个 JPEG_InputHandler仅仅是 写 处理;对写指针JPEG_IN_Write_BufferIndex处理限定,看不出啥来;
还应结 ...

感谢 mikecai 的协助
虽然说这个程序是官方的,不过在这个程序中却没有设置JPEG_OutputHandler,后来在F769范例中找到类似的方式,不过他的程序转成RGB的方式却不同。

这个方面我再多确认问题面,还是再次感谢 您的协助!!
回复 支持 反对

使用道具 举报

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