发新帖我要提问
123
返回列表
打印

正在搞用SPI口进行c8051f060与AT450DB041B的读写(不断更新进展)

[复制链接]
楼主: 蓝色日出
手机看帖
扫描二维码
随时随地手机跟帖
41

没有人用config 2吗

我们用新华龙的芯片写初始化程序时,一般都用config2,需要哪些功能,需要什么样的配置,点几个勾就可以了,初始化程序自动就生成了,不必手动写这么多程序的啊.
只有出错误的时候,才会去查config自动生成的代码是否有问题,目前还没发现过有问题.

使用特权

评论回复
42
蓝色日出|  楼主 | 2008-1-3 17:18 | 只看该作者

config2是什么

config2是什么?我没有接触过。
我刚才上网搜了一下,相关的结果很多,有网络查看工具、调CS无敌的、设置系统的……
LS,能说的具体一点吗?

使用特权

评论回复
43
三块石头| | 2008-1-3 18:00 | 只看该作者

回楼上

是新华龙单片机的开发工具之一,全名应该叫Configuration Wizard,应该算单片机可视化编程的一种辅助工具.比如说我要把P0.0配成UART的发送口(TXD),那我在Port I/O里把P0.0在TXD那行打上勾就可以了,它自动给你生成一句话:XBR0      = 0x04;并且自动生成I/O口的初始化函数.这里还可以设端口的开漏/推挽、交叉开关、开关看门狗、等等,几乎所有的初始化工作都可以自动生成代码(C/汇编可选),自己的工作主要就是主函数循环和中断处理.


一般各个外设各有一个初始化函数,比如void Port_IO_Init(),void SPI_Init(),void UART_Init()等等,然后还自动生成一个void Init_Device()用来调用前面这些函数.最后把这些都复制粘贴到你主函数的前面,并在主函数第一个调用Init_Device()即可.

使用特权

评论回复
44
xinchen97| | 2008-1-3 22:25 | 只看该作者

感觉C8051F的交叉编译开关的配置不是很难的事情啊

感觉C8051F的交叉编译开关的配置不是很难的事情啊,你只要看看PDF中相关的部分就能搞定了。以C8051f340为例uart0只能是P0.4和P0.5(不知道记错没有)。别的管脚是不能配置为uart0的。还有就是SPI接口的配置也是有管脚限制的。在规定的那个几个管脚中才能配置为SPI的。你可以仔细研究datasheet中关于交叉编译开关的那张图。很容易就能看明白了。

给你几点建议:
  1.下几个C8051f的例程来看看人家是如何初始化管脚功能的。这个很容易找到的。
  2.读懂你SPI器件的datasheet。
  3.在完成1,2的基础上写一个spi的程序以读取flash 的ID来测试spi的相关函数是否正确。flash 的ID在flash的Datasheet中肯定有提到的。
  4.写spi的各种读写函数。这个时候就好看flash的datasheet什么时候要写保护取消,cs选中,数据写入。datasheet上都有明确的说明的。

参照上面几步你基本一两天就能搞定了 

使用特权

评论回复
45
蓝色日出|  楼主 | 2008-1-3 22:56 | 只看该作者

谢谢xinchen97

我觉得我好像钻进死胡同了。
在三块石头朋友的帮助下,交叉开关的问题基本解决了。但还有一个问题,就是“输出方式”。何时用推挽何时用开漏极,应该是具体问题具体分析吧?
我现在做的事情是看f060的资料,和您上面说的第一步和第二步。同时做一些外围的硬件的事情,比如配置显示器和键盘。

使用特权

评论回复
46
xinchen97| | 2008-1-4 19:52 | 只看该作者

关于推挽和开漏极

我的理解是推挽用于增加驱动能力。开漏极用于不需要去增加驱动的场合。举一个例子。用UART0的时候Tx管脚是用推挽,RX管脚是用开漏极。同样的道理如果你有一个GPIO要驱动LED的时候采用推挽,如果一个GPIO要读取外部某个芯片的管脚电平的时候用开漏极。按照这个来设置你的管脚就可以了。

使用特权

评论回复
47
蓝色日出|  楼主 | 2008-1-4 19:58 | 只看该作者

谢谢楼上:)

豁然开朗!

使用特权

评论回复
48
mohanwei| | 2008-1-4 21:23 | 只看该作者

用过config2你就感叹“原来单片机程序也可以这么开发”了


以前编的程序还要有Timer_Init();Uart_Init();……现在不用了。

使用特权

评论回复
49
三块石头| | 2008-1-4 21:41 | 只看该作者

回47楼

其实推挽和开漏可以理解为同一种东西的不同表现形式.
推挽上下两个MOS管本质上是两个可变电阻,想输出高时把上管变为小电阻(导通),下管截止变为大电阻,两个电阻一串联,分压输出自然就是高电平,低电平反之.而开漏输出只是把上面的管子换成一个固定电阻放到芯片外面了,这个电阻的选取由咱们自己定,相对灵活一点.

另外,蓝色日出
开漏输出还有两个非常重要的功能,在一般的数字电子技术书中都可以找到说明.一个是改变逻辑(高)电平,比如C8051F系列的IO电压是3.3V,也就是LVTTL电平,那么它与老的5V器件接口,应当用开漏,把上拉电阻拉到5V,这样输出的高电平就是5V而不是3.3V.与其他电平类型的接口也是同样原理.
C8051F系列的很多芯片都声称能IO口耐5V电压,但实际上并不太可靠.例如我们经常使用的330就不耐5V,一接就烧.020似乎还凑合.所以我们实际使用的时候都用开漏+上拉和5V接口,保险.

开漏输出的另一个功能是实现"线与"操作.你做的是SPI总线,和它很类似的IIC(SMBus)就要求两个信号线开漏输出,这样总线上的器件不论谁发起通信,都可以使总线电平拉低,而不损害其他器件的输出驱动单元.

使用特权

评论回复
50
xinchen97| | 2008-1-4 23:22 | 只看该作者

受教了

谢谢三块石头。根据你的指导重新看了一下相关的定义明白了许多。但是有几个问题向你请教一下。
1.现在我要检测一个外部器件的电平其实用推挽输出还是开漏极输出都是无所谓的是吗??因为我在使用中改变了输出方式对的检测结果是没有影响的。当然了检测管脚的输出电流我是计算了在C8051f系列单片机的范围内的。
2.按照你的解释我们是不是可以认为推挽其实是起到了上拉电阻的作用的。所以在电路设计中相关的管脚其实可以不加上拉电阻的。我是不是可以这么理解。
3.对于推挽和开漏的理解我认为是。在推挽方式,向端口数据寄存器 中的相应位写逻辑‘0’将使端口引脚被驱动到GND,写逻辑‘1’将使端口引脚被驱动到VDD。 在漏极开路方式,向端口数据寄存器中的相应位写逻辑‘0’将使端口引脚被驱动到GND,写逻辑 ‘1’将使端口引脚处于高阻状态。开漏状态下管脚能承受的电流是不是要比推挽状态下的大一些?

   谢谢你了

使用特权

评论回复
51
蓝色日出|  楼主 | 2008-1-7 16:20 | 只看该作者

石头

我之前只知道,一般用开漏极输出是因为器件工作电压为5V,需要进行电平转换。而我用的器件也是3.3V工作的,按我上述理论就不需要用开漏极。但用SPI总线方式又需要有三个口设为开漏极。此时的开漏极是不是也需要外接10K的上拉电阻?上拉电源是3.3V还是5V呢?

使用特权

评论回复
52
蓝色日出|  楼主 | 2008-1-7 16:36 | 只看该作者

三块石头的回答:

日出:
既然要求开漏输出,那就要上拉电阻,而且10K到2K应该都没太大问题,看速度.

既然MCU和EEPROM都是3.3V电源,那上拉电阻也就可以是3.3V,这时的开漏只是总线的要求,而不是电平转换的要求.

使用特权

评论回复
53
三块石头| | 2008-1-7 17:05 | 只看该作者

回xinchen97

第一个问题,"开漏"和"推挽"指的是输出方式,和输入方式没有关系,所以读端口状态时两种方式得到的结果是一样的.也可以看下边那图,摘自020手册,看它输入读端口状态是单走一条线,并且输入的时候,输出的两管都被禁止了.

第二而问题没看明白...这么说吧,推挽是等于加了个可变的上拉电阻. 如果设为推挽方式输出了,那么当然不必再外加上拉电阻,因为一般推挽的驱动能力比较强的(MOS管导通等校的电阻有多小?上边的电阻越小,输出驱动能力越强啊)

第三个,前几句话我都是这么认为的,最后耐电流的问题,我觉得低电平时,由于电流还是通过N管灌到地,因此耐电流能力受N管能力约束,似乎没比推挽大多少?

最后一个问题,我也拿不准,仅是个人想法.
另外我也是菜鸟,我的话不是"指导",呵呵~~~

使用特权

评论回复
54
蓝色日出|  楼主 | 2008-1-9 09:23 | 只看该作者

最新进展

初始化程序已经基本完成,对器件的读写程序基本完成,这几天焊了实验板,键盘和显示程序还没有完成。
过几天弄好之后再总结吧

使用特权

评论回复
55
winloop| | 2008-1-9 10:35 | 只看该作者

楼主用这个片子感觉怎么样?

稳定么?结不结实?

使用特权

评论回复
56
蓝色日出|  楼主 | 2008-1-9 11:56 | 只看该作者

回楼上

这两个片子我们都是第一次用,性能不太了解。

使用特权

评论回复
57
蓝色日出|  楼主 | 2008-2-2 10:05 | 只看该作者

好久没上来了

又出差了一段时间,现在放假在奶奶家。
出差之前,完成了全部的驱动程序,也基本实现了读写,由于硬件的限制,只是再出门前一天用示波器看了下波形。
多亏出差了,不然就会不了家了。哈哈。南方的雪太大了。
现在中央五在直播火箭和步行者的比赛。目前比分99平,还剩3分12秒。

使用特权

评论回复
58
蓝色日出|  楼主 | 2008-2-2 10:10 | 只看该作者

怎么在版面看不到自己的帖子???

怎么在版面看不到自己的帖子???

使用特权

评论回复
59
cecwxf| | 2011-7-15 11:45 | 只看该作者
嗯 遇到同样的障碍 长见识

使用特权

评论回复
60
hotpower| | 2011-7-15 19:26 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则