
用什么工具可以读写单片机的程序 ?? 用什么软件可以给单片机刷新程序??
1,可以通过编程器读写;
2,可以通过串口软件刷新程序;
3,可以通过USB驱动软件读写、刷新程序;
4,可以通过SPI/I2C驱动软件读写、刷新程序;
CH375是一个国产USB转接芯片,集成了U盘 *** 作固件,可以直接把U盘当做一个一个的扇区来读写,加上一个文件系统,你就可以在U盘上拷贝,粘贴,新建等Windos下具备的文件 *** 作功能了。
另外其还支持从机模式,可以让单片机或DSP通过它连接到电脑上实现一个自制的USB鼠标/键盘或U盘等。其兼容USB20协议,最大传输速度为USB11的12Mbps。对于一般的嵌入式应用来说,速度已经能满足需求。
更可贵的是,这时一片民族芯片,意味着你面对将是中文PDF和一个完善的网络技术支持氛围。使用CH375将让你学习USB协议不再枯燥,不再是纸上谈兵。下面具体阐述一下这两天自己恢复调试该芯片的“艰辛”,其实该芯片并不脆弱,我焊了又拆,拆了又焊上,还是可以用。主要是制造这个芯片南京那家公司技术支持资料太丰富了,太详细了,以至于让我在做电路时也是小心翼翼,最后反而吃了大亏。
一、CH375分为A和B两个系列,A系列支持5V供电,B系列不仅支持5V还支持33V。
二、B系列中,如果使用5V供电,则V3引脚通过001uF电容接地,如果是33V,则V3接33V,这点很重要;
三、CH375资料上说对于电源VCC引脚端应该接001uF的电容到地,该电容功能为退耦电容,同时,晶振必须为12MHZ,晶振引脚和电容引脚尽量近CH375的Xi和Xo引脚。如果硬件连接正确,上电时,在Xo端应该可以检测到12MHZ的波形,在没有示波器的情况下,可以用万用表检测Xi和Xo引脚是否为电源电压的一半,即如果是5V供电,此时两个引脚的电压应该接近25V,我在自己制作的腐蚀板中变遇到了晶振无法起振的情况,开始怀疑是引脚离得有点远,于是改变了电容的放置位置,使之更近ch375两个引脚,也没有起振。然后怀疑是CH375坏了,前后一共换了3片还是没有起振,最后在反复检测电路后,换了一颗晶振,我把所有的怀疑都用完后,最后目光聚焦在了两个0603封装的22P电容上,当然开始我还不是怀疑电容有问题,而是ch375应用资料上给的电容是15p的,但手上又没有这个容值的电容,电容都焊下来了,因为太小,掉哪去也不知道,于是重新换了两个22p的,结果却“奇迹般”的起振了。
难道困扰了我两天的竟然是两颗坏了的晶振电容?因为那两个小东西也不知道躲哪去了,我不能再揪出来拷问,那就认为是人品问题吧,遇到了两个坏了电容,或者是自己焊接的时候不小心焊坏了,罪过。。。后来我还原了电路,一层一层验证,取下了VCC的退耦电容,可以工作;再把两个电容移回原来离CH375较远的位置,还是可以起振。仅以此调试经验警醒自己,我怀疑的逻辑,相信大多数人也是这样,越大的,越复杂的,越脆弱,呵呵,这种逻辑有问题么?调试是一个痛苦的过程,调试又是一个快乐的过程,恭喜你,嵌入式工程师,尝尽人间苦乐!
四、当上电后CH375能起振了,这时还可以测一下25和26脚的电平,26为高,25为低,说明硬件复位时成功的,否则你就要看下RST连接的一个到VCC的047uF电容那是否有问题了。另外就是,在晶振没有起振的情况下,往CH375写数据,那个指示灯会不停的闪,写一此,闪一次,这是不正常德。
五、当硬件能起振了,复位也完成了,请将8位数据口接到你的微控制器(单片机或DSP等),然后你还要接A0,WR,RD,INT,最后保证在软件 *** 作芯片的时候CS为低。如此,通过往CH375写命令CMD_CHECK_EXIST(0x06),接着写一个任意8位数据,稍微延时几个毫秒,CH375会返回你一个数据,这个数据是你写的数据的取反,如果你收到了这样一个取反的数据,恭喜你,你的硬件和底层软件读写 *** 作成功了,接下了便可以开始自己的USB协议解析之旅。如果你收到的数据不是正确的取反数据,那么请仔细检查在没有任何线连接的情况下,晶振是否起振,复位是否成功,如果晶振已经起振,你已经成功了一大半,至于读写的时序,网上到处都是,51的,AVR的,找一个可以用的,稍作移植便可以使用。底层 *** 作成功,是后续分析和学习USB协议的关键。
#define EEPMASS1 0xAE //密码钥匙1
#define EEPMASS2 0x56 //密码钥匙2
#define EEPADDR 0x4000 //eep地址起始
void eeprom_read(U16 u16Addr, U8 pdatas, U8 len)
{
U8 eep=(U8 )u16Addr;
U8 j;
for(j=0; j<len; j++)
{
pdatas[j]=eep[j];
}
}
void eep_word_write(U16 u16Addr, U8 pdatas, U8 len)
{
U8 eep=(U8)u16Addr;
U8 j;
FLASH_DUKR=EEPMASS1; //锁1密钥
FLASH_DUKR=EEPMASS2; //锁2密钥
while(!(FLASH_IAPSR&0x08)); //等待解密就绪
DISABLE_MAC_INTERRUPTS();
FLASH_CR2 |= 0x40; //
FLASH_NCR2 &= ~0x40; //设置字编程
for(j=0; j<len; j++)
{
eep[j] = pdatas[j];
}
while(!(FLASH_IAPSR&0x04));
FLASH_IAPSR &=0xf7; // off the eeprom program
ENABLE_MAC_INTERRUPTS();
}
估计搂主什么也不懂,写了也是白写,不过还是写点吧
#include <iostream>
using namespace std;
int main()
{
freopen("outtxt","w",stdout);
cout<<"hello!";
return 0;
}
#include<stdioh>
int main()
{
int a[10],b[10],sum=0,i;
FILE Fp;
Fp=fopen("f1txt","w");
for(i=0;i<10;++i)
{
scanf("%d",&a[i]);
fprintf(Fp,"%d\n",a[i]);
}
fclose(Fp);
Fp=fopen("f1txt","r");
for(i=0;i<10;++i)
{
fscanf(Fp,"%d",&b[i]);
printf("%d\n",b[i]);
sum+=b[i];
}
printf("\n%d\n",sum);
fclose(Fp);
return 0;
}
#include<stdioh>
#include<stdlibh>
int main()
{
int a;
FILE Fp,Fq;
if((Fp=fopen("f1txt","r"))==NULL)
{
printf("Can not open f1txt\n");
exit(0);
}
if((Fq=fopen("f3txt","w"))==NULL)
{
printf("Can not open f3txt\n");
exit(0);
}
while((a=fgetc(Fp))!=EOF)
{
fputc(a,Fq);
}
fclose(Fp);
fclose(Fq);
return 0;
}
#include <stdioh>
#include <stdlibh>
int main()
{
FILE pf = fopen("atxt", "r");
if(pf == NULL) {
printf("open atxt file failed!\n");
exit(0);
}
FILE pf2 = fopen("btxt", "w");
if(pf2 == NULL) {
printf("open btxt file failed!\n");
fclose(pf);
exit(0);
}
char ch;
while(!feof(pf)) {
ch = fgetc(pf);
putchar(ch);
fputc(ch, pf2);
}
fclose(pf2);
fclose(pf);
return 0;
}
以上就是关于用什么工具可以读写单片机的程序 用什么软件可以给单片机刷新程序全部的内容,包括:用什么工具可以读写单片机的程序 用什么软件可以给单片机刷新程序、求助51单片机+CH375B读写U盘测试程序的问题、stm8s的EEPROM读写程序如何编写,需要哪些配置步骤等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)