这时才知道W3100A的SHADOW_REG是怎么用的。

| 2008-04-30
作者:gerald03

EDN博客精华文章  作者:gerald03

例程中的一个函数,由此我明白了它的shadow register是怎么用的。说实在的,它这款芯片真的不怎么地,datasheet中的bug多不说,想shadow register这中用法还是头一次见到,这种用法感觉很不可理喻。

怪不得他们公司都不宣传W3100A了,也不更新它的datasheet了。可能没人用这款老芯片了。新款芯片取代了老的。

u_int select(SOCKET s, u_char func)
{
    u_int val;
    un_l2cval rd_ptr, wr_ptr, ack_ptr;
    u_char k;

    EX0 = 0;
    switch (func) {
    case SEL_CONTROL :        &
nbsp;          // socket status information
        val = IndirectReadByte(SOCK_STATUS(s));
        break;

    case SEL_SEND :                // Calculate send free buffer size
        k = IndirectReadByte(SHADOW_TXWR_PTR(s)); // Shadow Register needs to be read before reading buffer register
        wait_1us(2);
        IndirectReadBuf(TX_WR_PTR(s),(u_char*)&wr_ptr,4);

        if( (IndirectReadByte(OPT_PROTOCOL(s)) & 0x07) != SOCK_STREAM)
        {
            k = IndirectReadByte(SHADOW_TXRD_PTR(s));  // Shadow Register needs to be read before reading buffer register
            wait_1us(2);
            IndirectReadBuf(TX_RD_PTR(s),(u_char*)&ack_ptr,4);
        }
        else
        {
            k = IndirectReadByte(SHADOW_TXACK_PTR(s));  // Shadow Register needs to be read before reading buffer register
            wai
0
0
(请您对文章做出评价)
1】【2】【3

推荐文章

加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

赞助商链接

  • 博客推荐

  • 论坛推荐

  • 在线研讨会