中级会员
- 积分
- 419
- 金钱
- 419
- 注册时间
- 2018-2-22
- 在线时间
- 81 小时
|
最近选了颗i.MXRT1062做二维码条码识别器,从供应商那忽悠了块官方EVK,折腾了大半个月,基本搞完了,识别速度几十毫秒。
接下来慢慢等硬件去layout,估计又是胎死腹中的节奏。闲下来就分享点东西吧。
看过官方的摄像头CSI Demo一般会觉得有点复杂,封装了好几层,将近10来个文件,不过比起linux的V4L2框架是小巫见大巫。
这个应用只是用CSI来获取张照片,连双缓冲都用不上,两文件基本就能搞定,那10来个文件怎么看怎么别扭.
于是重新修改了,只用两个文件,一个是与具体sensor无关的camera.c, 一个是具体sensor的配置文件,这里用的是官方的 MT9M114,命名为 mt9m114.c。
另外官方的csi底层驱动需小改动,如下:
1:csi_config_t,位于fsl_csi.h,需要增加几个成员
/*! @brief Configuration to initialize the CSI module. */
typedef struct _csi_config
{
uint16_t width; /*!< Pixels of the input frame. */
uint16_t height; /*!< Lines of the input frame. */
uint32_t polarityFlags; /*!< Timing signal polarity flags, OR'ed value of @ref _csi_polarity_flags. */
uint8_t bytesPerPixel; /*!< Bytes per pixel, valid values are:
- 2: Used for RGB565, YUV422, and so on.
- 3: Used for packed RGB888, packed YUV444, and so on.
- 4: Used for XRGB8888, XYUV444, and so on.
*/
uint16_t linePitch_Bytes; /*!< Frame buffer line pitch, must be 8-byte aligned. */
csi_work_mode_t workMode; /*!< CSI work mode. */
csi_data_bus_t dataBus; /*!< Data bus width. */
bool useExtVsync; /*!< In CCIR656 progressive mode, set true to use external VSYNC signal, set false
to use internal VSYNC signal decoded from SOF. */
uint32_t frame_buf1; /*Add by CJS:RX frame buffer 1*/
uint32_t frame_buf2; /*Add by CJS:RX frame buffer 2*/
} csi_config_t;
2: void CSI_TransferHandleIRQ(CSI_Type *base, csi_handle_t *handle),位于fsl_csi.c, 里面的中断处理按需自行更改。
|
|