分类: 硬件

K2P金色博通版本信息

K2P金色博通版本信息有9条评论

2017年9月22日 at 下午10:26分类:硬件 阅读: 1,880 次

FLASH布局:

Creating 8 MTD partitions on "bcmsflash":
0x000000000000-0x000000040000 : "boot"
0x000000040000-0x000000ec0000 : "linux"
0x0000001fc4f4-0x000000ec0000 : "rootfs"
0x000000ec0000-0x000000fc0000 : "data"
0x000000fc0000-0x000000fd0000 : "factory"
0x000000fd0000-0x000000fe0000 : "dev_info"
0x000000fe0000-0x000000ff0000 : "nvram_backup"
0x000000ff0000-0x000001000000 : "nvram"

# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00010000 "boot"
mtd1: 00e80000 00010000 "linux"
mtd2: 00cc3b0c 00010000 "rootfs"
mtd3: 00100000 00010000 "data"
mtd4: 00010000 00010000 "factory"
mtd5: 00010000 00010000 "dev_info"
mtd6: 00010000 00010000 "nvram_backup"
mtd7: 00010000 00010000 "nvram"

CFE下信息:

 

KERNEL(linux)开头的内容:

rootfs开头的内容:

 

目前用到0x9a7680:

 

data区的内容,用户可写的数据区(/tmp/media/data/ ):

factory区,出厂参数:

包含无线校准参数和mac地址,将下面的telnet_enable改成on会永久打开telnet:

dev_info区,加密保存设备信息:

nvram_backup分区,明文保存nvram备份信息:

nvram分区:

斐讯K3硬件配置

斐讯K3硬件配置无评论

2017年9月16日 at 上午9:40分类:硬件 阅读: 1,377 次

电源12V 4A,8根Pcb天线

128M Flash,512M Ram

 

CPU,BCM4709C 双核1.4G

 

Wifi芯片:BCM4366,一共2颗,分别负责2.4G和5G,4×4 MU-MIMO处理器,支持NitroQAM调制技术。

功率放大:5G采用PA5542功率放大器;2.4G采用SKY2623L功率放大器

 

屏幕控制:PIC32MZ1024ECH100单片机

CC2541蓝牙开发

CC2541蓝牙开发无评论

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

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

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

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

2、CC2541的低功耗模式

空闲模式:sleepcmd.mode=0,PCON=1进入此模式,停止CPU 内核活动,此模式将被任何使能的中断唤醒

PM1:sleepcmd.mode=1,PCON=1进入此模式,32M变为32K晶振,数字核心正常,CPU停止执行,复位、外部中断或睡眠定时器过期将转为正常模式

PM2:sleepcmd.mode=2,PCON=1进入此模式,数字核心模块关闭,复位、外部中断或睡眠定时器过期将转为正常模式

PM3:sleepcmd.mode=3,PCON=1进入此模式,晶振关闭,数字核心模块关闭,复位、外部中断过期将转为正常模式

进入低功耗模式后,I/O 引脚保留进入之前设置的I/O 模式和输出值。

所有低功耗模式的CPU内核执行都是停止的

3、ADC

p0口管脚可以作为ADC,ADC参考电压为1.25v,参考电压对应采样的最大值,比如10位采样,最大值为511,511时就为1.25v

可以对供电电压进行采样,缺省是对供电电压的1/3进行采样,因此最大支持1.25*3=3.75v电压采样

片内的温度传感器也可以用adc采样输出
//显示VDD电压
{
HalAdcSetReference( HAL_ADC_REF_125V );
adc = HalAdcRead( HAL_ADC_CHANNEL_VDD, HAL_ADC_RESOLUTION_10 );
vdd=adc*1.25*3/511;
sprintf(str, "vdd=%.3f", vdd);
HalLcdWriteString( str, HAL_LCD_LINE_5 );
}

//显示温度
{
#define TEMP_CONST 0.61065 // (1250 / 2047)
#define TEMP_OFFSET_DATASHEET 750
#define TEMP_OFFSET_MEASURED_AT_25_DEGREES_CELCIUS 29.75
#define TEMP_OFFSET (TEMP_OFFSET_DATASHEET + TEMP_OFFSET_MEASURED_AT_25_DEGREES_CELCIUS) // 779.75
#define TEMP_COEFF 4.5
float AvgTemp;
float AvgTemp_sum = 0;
TR0 = 0x01; //设置为1来连接温度传感器到SOC_ADC
ATEST = 0x01; //使能温度传感
// 求64个平均值,以便稳定
for(int i = 0; i<64; i++) { HalAdcSetReference( HAL_ADC_REF_125V ); adc = HalAdcRead( HAL_ADC_CHN_TEMP, HAL_ADC_RESOLUTION_12 ); AvgTemp = adc * TEMP_CONST; AvgTemp = ((AvgTemp - TEMP_OFFSET) / TEMP_COEFF); AvgTemp_sum += AvgTemp; } // 得到实际温度 AvgTemp = AvgTemp_sum/64; TR0 &= ~0x01; ATEST &= ~0x01; sprintf(str, "temp=%.3f", AvgTemp); HalLcdWriteString( str, HAL_LCD_LINE_6 ); }

 

4、开关蓝牙广播
uint8 current_adv_enabled_status;
uint8 new_adv_enabled_status;
//获取当前GAP广播状态
GAPRole_GetParameter( GAPROLE_ADVERT_ENABLED, ¤t_adv_enabled_status );
//切换广播开关状态
if( current_adv_enabled_status == FALSE )
{
new_adv_enabled_status = TRUE;
}
else
{
new_adv_enabled_status = FALSE;
}
//设置蓝牙广播开关
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &new_adv_enabled_status );

5、BLE连接过程

启动后,蓝牙设备开始处于广播状态,如果DEFAULT_DISCOVERABLE_MODE设置为GAP_ADTYPE_FLAGS_LIMITED状态,则广播180秒后停止(可用GAP_SetParamValue(TGAP_LIM_ADV_TIMEOUT, 60)重新设置时超时间),如果设置为GAP_ADTYPE_FLAGS_GENERAL则一直广播。
连接成功后,从设备广播停止。
BLE主设备每次必须通过从设备广播才能连接,这表示一个从设备只能同时和一个主设备建立连接。

广播包中包含:发现模式(是否为受限广播,是否支持BR/EDR)、服务UUID等
扫描响应包含:从机名称、连接时间参数、发射功率(CC2541支持3种发射功率:0dB(default)、-6dB、-23dB,此发射功率只是发给主机看看而已的,并不起配置作用,实际设置用HCI_EXT_SetTxPowerCmd函数)

主设备扫描,从设备回复扫描响应数据scanRspData,主设备发起连接请求,建立连接。

BLE建立连接后,才进行配对和绑定过程。
连接后,如果要进行配对,必须将主机或从机某一方的配对模式GAPBOND_PAIRING_MODE设置为GAPBOND_PAIRING_MODE_INITIATE

6、程序加载
程序加载是要保证调试器指示灯为绿色,如果是红色,需按一下复位键重新连接

7、关于蓝牙信号
蓝牙芯片上电后,缺省使用内部晶振,如果能够运行程序,控制指示灯,但是无蓝牙信号,请检查外部晶振是否正常

8、关于自定义按键
主要修改hal_key.c,按键处理流程
先设置IO口的管脚,设置为IO输入、边沿触发、中断使能,按键触发中断后,中断会调用halProcessKeyInterrupt,然后发送消息给HAL层,HAL层调用HalKeyPoll函数查询按键,确定键值后调用回调函数pHalKeyProcessFunction,回调函数在HalKeyConfig配置为OnBoard_KeyCallback,OnBoard_KeyCallback通过OnBoard_SendKeys发消息给应用层。

9、关于蓝牙特征值
蓝牙特征值主要修改simpleGATTprofile.c文件,各个特征值的读写特性、描述等都在simpleProfileAttrTbl属性表中定义,特征值读写函数为SimpleProfile_GetParameter、SimpleProfile_SetParameter,读写回调函数simpleProfile_ReadAttrCB、simpleProfile_WriteAttrCB,应用层的回调函数simpleProfileChangeCB

10、关于配对与绑定
BLE的配对发生在连接之后,并且配对和绑定是可选的
传统蓝牙的配对发生在连接之前,配对和绑定是必须的
要触发BLE配对,必须设置主从设备一方的配对模式为GAPBOND_PAIRING_MODE_INITIATE
BLE的配对与绑定主要用于安全加密,特征值的value属性可以设置为“GATT_PERMIT_AUTHEN_READ”或“GATT_PERMIT_AUTHEN_WRITE”,这样连接未配对情况下无法读取或写入

配对后会进行绑定,设备和手机双方会记录对方的信息,下次连接无需配对
如果要清除,IOS实测如下:
单独设备侧清除,手机连接后无需配对过程,但是无法读取加密的特征值,必须手机侧清除配对后(IOS在蓝牙界面忽略设备),才能重新触发配对过程
单独手机侧清除,可以触发重新配对过程
设备和手机都清除,也可以触发重新配对过程

状态迁移:
未绑定时:GAPBOND_PAIRING_STATE_STARTED->ProcessPasscodeCB->GAPBOND_PAIRING_STATE_COMPLETE
绑定后:GAPBOND_PAIRING_STATE_BONDED
设备删除绑定信息,手机未删除绑定信息则会跳过配对过程

CC2541可以最大记录10个配对设备(GAP_BONDINGS_MAX)
当绑定记录超过10个时,TI源程序gapbondmgr.c中的处理是无法记录绑定信息

可以修改gapBondMgrFindEmpty函数,在存满时将第一个记录作为最新绑定记录,避免新设备出现无法绑定的现象:

调用如下语句可以清除绑定信息:
GAPBondMgr_SetParameter( GAPBOND_ERASE_ALLBONDS,0, NULL );

三极管开关电路

三极管开关电路无评论

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

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

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分类:硬件 阅读: 532 次

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)