分类: 硬件

金士顿SV300 120G SSD随机不认盘问题修复

金士顿SV300 120G SSD随机不认盘问题修复无评论

2018年6月1日 at 下午4:25分类:硬件 阅读: 573 次

金士顿SV300用了2年多,随机出现不认盘或使用时踢盘现象,BIOS中也不认,有时断电、拔几次sata插头又好了

试了ssd管理工具中的安全删除不管用,只能参考网上资料重新开卡,死马当活马医

主要参考文章:
http://www.upantool.com/jiaocheng/ssd/2018/12511.html

1、找一个硬盘盒的USB转SATA,接上SSD
2、计算机在VMware中安装 Fedora Core 14, 32‐Bit,下载地址
https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/14/Live/i686/Fedora-14-i686-Live-Desktop.iso
3、下载工具到SSD中,主要有
1)开卡软件SF Genesis v1.7.0
2)开卡工具安装需要的安装包
3)SF2281 60A固件
4)License
5)License校验和生成工具
4、将SSD插到USB口,用ssd管理工具查找id号

60A是固件版本,33205是id号
33205对应的信息:

镁光颗粒8xFT16B08UCM1-3B,主控SF-2281-Gold-Kingston,有说是SF2281 VB4,芯片上打标CL13824,就是金士顿后期放水的那批SSD
5、将SSD连接到虚拟机中

6、解压SSD中下载的文件,拷贝到fedora中,注意可执行程序都要手动修改权限为可执行
解压Genesis 要用到的安装包.rar ,进入到解压的目录运行,安装下面几个文件.
rpm –i lsscsi-0.23-2.fc14.i686.rpm
rpm –i mailx-12.5-1.fc14.i686.rpm
rpm –i sg3_ utils-1.29-1.fc14.i686.rpm
rpm –i smartmontools-5.40-5.fc14.i686.rpm
7、修改license文件
修改lic文件里面的configuration_id,填写上面检测到的id(33205)
把最后一行的<checksum>xxxxxxxxxxxxxxxxxxxxxxxx</checksum>删除
把文件保存到checksum程序目录,命名为test.lic

生成checksum,执行
./checksum test.lic,会自动添加校验和

8、进入开卡程序目录,执行 ./SF_OEM_ PackageManager

从上到下分别是固件路径,修改的license路径,输出目录,最后三行根据图示填写
选好后,点击“Create OEM Package”,等待几十分钟完成,会在输出目录生成配置文件
9、运行 ./SF_ConfigurationManager修改配置信息
找到33205配置文件

修改如下配置:


然后另存为一个自己命名的配置文件,比如33205.123456.myssd.driveconfig

10、烧录固件
先在终端输入lsscci命令,找到设备标签

上图是5:0:0:0
执行命令SF_Genesis烧写固件,命令格式:
SF_Genesis -PROCESS_SSD 设备标签 mfp文件 driverconfig文件 12345 www_123 log=输出日志文件
我的是这样:

排错处理:

拆开SSD外壳,用镊子短接红框中两个孔,然后再插入USB,就会进入ROM模式:

成功记录:

操作完成后,就是一个新盘,插入计算机,重新格式化

三星T190P显示器修理

三星T190P显示器修理无评论

2017年8月30日 at 上午11:50分类:硬件 阅读: 1,201 次

故障现象:
显示器开电后无显示,电源指示灯闪烁

修理:
1、底座没有螺丝,直接用力往下拔

漏出来两颗螺丝。卸下来。。。壳子周围都是暗扣的。用一字螺丝刀翘起

2、拆除电路板与显示屏的连线,翻过来

3、用万用表量肖特基二极管,有短路

型号为SR310或SR510或SB3100

4、焊下换新的即可

CC2541蓝牙开发

CC2541蓝牙开发无评论

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

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

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

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

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)