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

JPEG 硬体解码问题

[复制链接]
hans5966 提问时间:2019-12-10 16:08 /
各位好,

想与各位请教,我用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而无法使用

有高手能相助吗?


非常感谢!
收藏 评论2 发布时间:2019-12-10 16:08

举报

2个回答
慎微 回答时间:2019-12-10 17:48:47
这个 JPEG_InputHandler仅仅是 写 处理;对写指针JPEG_IN_Write_BufferIndex处理限定,看不出啥来;
还应结合JPEG_OutputHandler一起看 读处理;才能了解 JPEG_BUFFER_EMPTY 的原因;
您有平台,用KEIL跟踪处理;状态变 JPEG_BUFFER_EMPTY即为断点, 应该能找到原因
hans5966 回答时间: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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版