存档

2007年7月 的存档

AVR口线方式驱动DDS模块(旧),芯片AD9850

2007年7月31日

把模块上那块万恶的CPLD拆了,直接驱动口线,成功驱动~模块产生的正弦波很漂亮,频率能到很高,到普源25M的示波器极限是没什么问题。芯片转换出来的方波就不行了,上M就不漂亮~

对输入AD9850的标准正弦波,进行直接数字合成生成。输入频率最高为125MHZ,可生成0-Fclk/2范围内的任意频率正弦波和方波。

+3.3V或+5V单电源工作,正常,掉电模式。
可输入的时钟频率最高可达125MHZ
频率分辨率达到2^-32

AD9850 采用直接数字合成技术,利用片内集成的高性能的DAC和高速比较器,形成完全可编程的频率合成器和时钟发生器。可输入的时钟频率最高可达125MHZ,具有32bit的频率字使得频率分辨率达到2-32; 5bit来进行相位调制,允许输出以180o,90o,45o,22.5o,11.25o,以及它们的任意组合和相位角为增量跳变。具有可选的串行或并行数据传输方式。

此模块应用中,dds9850采用的是并行输入方式。

并行输入方式下,内部40bit的寄存器装载5个8位的字节。如下为并行输入时的频率字:W0包含相位调制字,掉电模式控制和装载模式控制。接下来的W2到W5是32bit的频率控制字。

Jacob 技术 ,

计数器的上升沿和下降沿触发

2007年7月31日

以一个最简单的计数器为例:

Port(
clock:in std_logic;
pulse:in std_logic;
q:out std_logic_vector(3 downto 0)
);
q输出为对pulse跳变沿的递增计数。clock为系统高速时钟。
Process(clock) begin
if rising_edge(clock) then
dly1pul <= pulse;
dly2pul <= dly1pul;
end if;
End process;
en <= dly1pul and not dly2pul;–上升沿
–en <= not dly1pul and dly2pul;–下降沿
–en <= dly1pul xor dly2pul;–上升沿和下降沿
Process(clock) begin
if rising_edge(clock) then
if en = ‘1′ then
cnt <= cnt + 1;
end if;
end if;
End process;
q <= cnt;

单对于此小问题,当然采用倍频实现双沿计数也是可行的,但是我们不要忘记,倍频器在很多CPLD或FPGA中是不支持的,即便支持其资源也是很宝贵的。
我看到的一些设计中,动辄采用某一信号作为时钟,应该说这种做法是欠妥的。因为不是全局时钟的时钟信号最大扇出是有限的,其很难保证时钟延时应小于信号延时的基本要求。当遇到要对某个信号的跳变沿处理时,建议采用上述小例子中en信号的处理办法。

Jacob 技术

E2PROM操作,解决重启问题

2007年7月29日

#define EERE 0
#define EEWE 1
#define EEMWE 2

void E2PROM_Write(unsigned int Addr,unsigned char Data)
{
while(EECR & (1< EEAR=Addr;
EEDR=Data;

EECR|=(1<

EECR|=(1< }

unsigned char E2PROM_Read(unsigned int Addr)
{
while(EECR & (1<

EEAR=Addr;
EECR|=(1<

return EEDR;
}

E2PROM读写函数,没有考虑中断的影响,毕竟这东西用的不多,本来以为这样子就可以用了,写了段记录开机次数的程序。

temp=E2PROM_Read(0×00a);

E2PROM_Write(0×00a,temp+1);

运行,结果0×00a地址的值确实在增加,只不过是不停的增加,换句话来说就是单片机不停的重启,查了写资料,发现是看门狗的缘故,在写E2PROM的时候必须喂狗,不然单片机就会复位。看门狗的操作我还不会,所以就从熔丝把看门狗关了,程序运行正常。明天有时间研究看门狗去。。。

Jacob 技术 , ,

CH375 USB芯片

2007年7月17日

从沁恒电子拿来的空板和芯片,焊了一下上系统立马能用了,程序写了一些,上位机能对下位机发数据了,下位机对上位机发实现起来应该也不困难,就是上位机软件不太会写,不知道怎么用它的dll库文件,沁恒网站上好像也没有c#的实例,先放一放吧,资料过一段时间整理好了再传

Jacob 技术

CVAVR与AVR Studio程序联调

2007年7月12日

没看到有资料介绍这个,虽然很简单

1. 进入CV主界面,点图标栏上的甲壳虫标志,弹出一个对话框,在这里选择AVR Studio主程序的位置,和版本。

2. 确定后,一个警告框提示你编译时将多生成一个cof文件用于调试,用于调试的AVR Sudio的版本不能小于4.06,确定后即可进入AVR Studio界面。

3. 点OPEN打开生成的cof文件。这里提示将生成用于调试的aps文件,确定后选择调试器的类型和仿真芯片的类型,这是目标板和仿真器都要供电。

4. 右边的方框里显示代码文件,有一个黄色的箭头指向将要执行的语句,在这里可以和别的仿真器一样实现断点,单步执行等操作。左侧可以看到寄存器值等。

Jacob 技术

TI的430Day

2007年7月11日

昨天在南京举行了TI的430DAY活动,在金陵之星大酒店进行了一天的讲座。最后是每人赠送一个eZ430开发工具和2个小开发板。

eZ430是个2线的仿真器,这个小东西创意的确不错,可惜使用不方便,需要将外壳拆下来才可以使用。感觉这样很容易损坏,接口也感觉不牢,容易接触不良。还是缺少使用说明,这样的结果估计一半人都不会使用的。

触摸板可以独立使用,也可以和eZ430联合使用。触摸板下面是一个松下的CR2032锂电池,将触摸板右上方的短路快连上,就可以做触摸板实验,按下任意键LED将发光,不按下就不亮。按键1亮度最高,按键4最暗。

比较意外的是430F22X学习板还带了一根并口线和探针,以及没有焊接的两个双排插针。

这个形式的研讨会只是了解一下而已,只有赠送的开发板比较吸引人,很多人大概都是冲着它来的。不过对430的印象好了不少。

Jacob 技术

窃网不算偷,读书人的事儿怎么能算偷呢

2007年7月11日

路由硬件:贝尔金F5D7230-4,4M Flash,16M RAM美国版
路由固件:DD-WRT v24 Beta (06/20/07) micro

目的:窗口处有极微弱的TP-LINK信号,大概在-88dB左右,目的是把它放大引入到房间内。嘿嘿,免费上网

实现方案:TP-LINK路由的IP是192.168.1.1,DHCP分配地址
将刷好DD固件的7230IP设为192.168.2.1,DHCP分配地址

在 7230设置里Wireless下Basic Setting里将Wireless Mode改成Repeater(中继),SSID改为TP-LINK的发射的SSID,通道一定要填对,Virtual Network Interface里填入7230发射的SSID,为了不让对方发现,将两者的Broadcast都设为Disable,保存设置。设置后的界面如下:

设置完就是比较重要的一个步骤了,将电脑连接到7230路由,这里要注意,我们把SSID隐藏了,所以要在Windows下手动添加一个无线网络。然后在电脑上不停地ping TP-LINK的路由,同时移动7230,找到一个信号最好的地方,即ping值最低的,最稳定的地方,将路由固定。

设置成功后上网速度感觉能达到ADSL的极限速度。成功后在Status下 Sys-info里能看到获得的ip和信号的强弱,注意下图红色框子。

123cha识别出的ip是南京市铁通:

铁通的网络实在不怎么样,不过蹭网要求也就不这么高了。。。

Jacob 技术