CC2541蓝牙开发

CC2541蓝牙开发无评论

2017年7月28日 at 下午12:06分类:硬件 阅读: 8 次

1、如何查看程序大小
在project项目的编译目录list下有一个map文件:

在此map文件最后有占用程序空间和RAM空间的信息:

CC2541的FLASH有128K和256K两种,RAM大小为8K

 

2、protel中PCB测距

ctrl+M开始测距,点击起始,再点击终止位置,会显示距离

三极管开关电路

三极管开关电路无评论

2017年7月27日 at 下午5:08分类:硬件 阅读: 15 次

一般的三极管开关电路如下:

a电路,开通时假设为高电平5V,基极电流Ib=(5V-0.7V)/4.7K=0.9mA,可以使三极管完全饱和。b 电路用的是PNP管,同样把蜂鸣器接在三极管的集电极,不同的是驱动信号是5V的TTL电平。以上这两个都可以正常工作,只要PWM驱动信号工作在合适的频率,蜂鸣器(有源)都会发出最大的声音。


上图在基极与发射极之间多加了一个100K的电阻,这个电阻也是有一定作用的,可以让三极管有一个已知的默认状态。当输入信号去除的时候,三极管还处于关断状态。在安全和稳定的方面考虑,多加的这个电阻还是很有必要的,或者说可以让三极管工作在更好的开关状态。

器件封装0805、0603

器件封装0805、0603无评论

2017年7月27日 at 下午12:15分类:硬件 阅读: 19 次

0805代表0.08英寸x0.05英寸,而1英寸=25.4毫米

1206
L:0.12inch(3.2mm)W:0.06inch(1.6mm)

0805
L:0.08inch(2.0mm)W:0.05inch(1.25mm)

0603
L:0.06inch(1.6mm)W:0.03inch(0.8mm)

0402
L:0.04inch(1.0mm)W:0.02inch(0.5mm)

CSR8670开发(3)-按键输入

CSR8670开发(3)-按键输入无评论

2017年7月20日 at 上午10:48分类:硬件 阅读: 69 次

开发板上的按键缺省都指定了功能,比如播放、音量、选曲控制等等
按键定义:
先将PIO口的物理按键映射成逻辑按键

上图显示PIO1口的物理按键指定为逻辑按键1
然后为逻辑按键指定相应的事件:

上图显示逻辑按键1指定为音量减少功能

要修改按钮功能,可以修改sink_buttons.c文件
修改函数ButtonsMessageHandler

在MESSAGE_PIO_CHANGED分支中是PIO口的状态变化事件,在此分支中判断按键
if (lMessage1->state & 1)
根据按键来添加相应的功能

CSR8670开发(2)-led、蜂鸣器、振动器控制

CSR8670开发(2)-led、蜂鸣器、振动器控制无评论

2017年7月18日 at 下午9:48分类:硬件 阅读: 76 次

1、用bluelab打开sink工程
2、修改main.c文件


    在main()函数前增加

    #define MYLED (1 << 10) /* bit 10 */
    #define MYDELAY 500 /* ms */
    static void myled_controller( Task t, MessageId id, Message payload )
    {
    PioSet32( MYLED, (PioGet32() ^ MYLED) );//PIO10电平反转
    MessageSendLater( t, 0, 0, MYDELAY ); //设置延时
    }
    static TaskData myled_controller_task = { myled_controller };

    设置PIO10闪烁
    在main()函数中增加:
    PioSetDir32(MYLED, MYLED); //设置PIO10为输出
    PioSet32(MYLED, MYLED); //初始化PIO10为高电平
    MessageSend( &myled_controller_task, 0 , 0 );

    重新编译、运行程序,PIO10连接的指示灯会闪烁

    将上面的PIO10改成PIO14,延时改为1ms,就可以驱动蜂鸣器发出500Hz的声音

    改成PIO15,可以驱动振动器动作

    注意,当PIO被系统配置占用的时候,如果用PioSet32设置PIO的数值,会导致设置语句执行失败,比如PIO6被系统占用:

    此时用语句:
    PioSet32( (1<<11)|(1<<10)|(1<<7)|(1<<6)|(1<<5), itemp); 会导致整条语句执行失败