打印

LPC54102 智能后视镜 (三)

[复制链接]
706|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    做的过程中发现,lpc54102的资料完全没有stm32多,而且讲的详细的人也很少,官方公布出来的也不太多,我分析一些实用但是讲的少的东西。
就是延时控制问题。对于ms级别的延时,还是比较好处理,用freertos的话,系统有计数,对于非系统,utick,sctime,都是比较好处理的。Us级别的处理,讲的人就少了。万利的板子用的是直接空循环延时的办法处理,方法倒是可以,觉得有点太简单粗暴了一些,而且具体的延时不好判断。
       Systick就是一个不错的办法。
设置分频数和重载值基本就可以使用了。
我实验过了,使用systick产生一个us级别的中断,完全没有问题。
就是官方的说法,intended for 10 ms。令人有些困惑。我只能理解为,官方推荐10ms中断,可以保证精度,其他的不一定,但是对于我们需要us级别中断的精度,基本是够。
推荐一个us中断函数。
systick里不断的增加一个u32变量。
U32 TimeCount;
void SysTick_Handler(void)
{
         TimeCount++;
}
void  delay_us(uint32_t _ulDelayTime)
{
   uint32_t tCnt, tDelayCnt;
         uint32_ttStart;                 
         tStart= TimeCount;                                    
         tCnt= 0;
         tDelayCnt= _ulDelayTime;                     
         while(tCnt< tDelayCnt)
         {
                   tCnt= TimeCount - tStart;
         }
}
由于unsigned int的特点,过了最大值,就是0,可以方便的运用在计数函数里。
另外,lpc54102中同样具有DWT,这个调试跟踪单元,它可以作为一个单独的计数器,而不会占用系统资源,可以用来做us级别定时。
最近项目,需要一面读取视频,一面刷新lcd,一面存储,就不得不提一下双核的运用。双核的运用最重要的mutexmailbox
双核的启动中涉及到M4发送mailbox触发mo reset,有网友讲的挺清楚。
就不细说了。
Mailbox这个功能其实非常简单, 多了一个锁,接收方,收到之后,锁定,另外一方就用不了。涉及到函数就两个。
         mutexTake();
         mutexGive();
使能MAILBOX_IRQ后,收到邮箱,进入中断。
由于就两个对象,不是m0,就是m4.逻辑上也没有啥优先级反转之类的问题。处理起来还是挺方便。
讲一个我的运用场景。Mo接收视频图像到一个指定的ram区,接收完成后,发缓冲区的地址给m4.M4处理,刷屏或者存储。处理完之后,把指针反馈给m0.mo才开始更新缓冲区。由于mailbox的锁是针对邮箱内容的。所以对于缓冲区,我也需要保护机制,互锁机制。
由于占用的ram非常大,这边自己需要设定一个内存池,方便管理,对于内存池的内存访问,必须只有接受到mailbox指针信息后,才可以访问或者写内存。这样才可以防止读写过程中出错。
理论上如此,涉及到图像处理,还是比较麻烦,占用资源,目前还在调试。完成后,会和大家分享心得。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

22

帖子

1

粉丝