ROC-RK3308-CC开发实例总结--TCS3200颜色传感器模块调试

颜色传感器介绍
       TCS230 是美国 TAOS 公司生产的一种可编程彩色光到频率的转换器。关于这款颜色传感器的原理不过多介绍,更详细可参考数据手册,总结来说它就是可以识别出颜色的rgb值,从out引脚以脉冲的形式表达出来。这个颜色传感器在网上有大量的51单片机的驱动代码,而对于linux驱动的代码却是非常少。网上的驱动思路最常见的就是:固定时间(比如10ms),计算三颜色的脉冲个数,分别乘以比例因子,最后得到颜色的rgb值

编写设备树
       讲完大概的驱动思路,然后来看看如何在rk3308去实现该驱动。在设备树描述设备:

color_sensor: color_sensor {
   compatible= "firefly,color-sensor-demo";
   status= "okay";
   led_gpio=<&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
   out_gpio=<&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
   s2_gpio=<&gpio1 RK_PA5 GPIO_ACTIVE_HIGH>;
   s3_gpio=<&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
  };

这里描述了四个引脚,led引脚用来控制颜色传感器模块上的led,out引脚时输出三原色脉冲数,s2、s3是颜色传感器滤波器的配置引脚,引脚的详细介绍参考数据手册。

编写驱动
      配置完设备树后,来看看驱动代码,在代码里用一个结构体来描述颜色传感器,如下:

//描述颜色传感器的类型
struct color_sensor{
   unsigned int gpio_s2,gpio_s3;
   unsigned int gpio_led,gpio_out;
   unsigned int out_irq;
   unsigned int rgb_cnt[3];//0 r 1 g 2 b //rgb颜色的脉冲计数
   int rgb_value[3];                                        //rgb颜色的值
   unsigned char lbq_status;                    //颜色传感器的滤波器状态
   struct timer_list timer;                              //定时器
   struct semaphore sem;                          //信号量
   unsigned char flag;                                 //1 识别颜色 0 白色平衡校验
 };

在中断里进

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值