CS8900A

Dec 26, 2003 1 Replies
íÏÅ ÐÏÞÔÅÎÉÅ, All!
÷ÏÐÒÏÓ Ë ÔÅÍ, ËÔÏ ÓÏÐÒÑÇÁÌÓÑ Ó ÜÚÅÒÎÅÔÏÍ ÎÁ ÓÁÂÖÅ×ÏÍ ÞÉÐÅ. HÅ ÍÏÇÕ ÔÏÌËÏÍ ÐÏÓÌÁÔØ ËÁÄÒ. óÔÁÔÕÓ ÌÉÎÉÉ - × ÐÏÒÑÄËÅ, ÐÉÛÕ ËÏÍÁÎÄÕ × TXcmd, ÚÁÔÅÍ ÄÌÉÎÕ × TXlen, ÐÒÏ×ÅÒÑÀ TXbidERR, Ready4TXNOW, ÚÁÐÉÈÉ×ÁÀ ËÁÄÒ - É ÔÉÛÉÎÁ. TXevent ÎÅ ÓÏÄÅÒÖÉÔ ÎÉ ÐÒÉÚÎÁËÁ ÏÛÉÂËÉ, ÎÉ ÐÒÉÚËÁËÁ ÕÓÐÅÛÎÏÊ ÏÔÐÒÁ×ËÉ. ïÄÎÁËÏ, ÅÓÌÉ ÎÅ ÔÒÏÇÁÔØ TXcmd É ÏÐÅÒÉÒÏ×ÁÔØ Ó TXlen, ËÁÄÒÙ ÕÈÏÄÔ ÐÏ ×ÓÅÍ ÐÒÁ×ÉÌÁÍ. æÉÇÎÑ ËÁËÁÑ-ÔÏ. ëÏÍÁÎÄÕ ÄÁ×ÁÔØ ÎÁÄÏ ×ÓÅ-ÔÁËÉ. ëÒÉÓÔÁÌ 3.3÷, rev.D.
16 bit I/O mode, AEN ÐÏÓÁÖÅÎ ÎÁ ÚÅÍÌÀ, SBHE ÄÅÒÇÁÅÔÓÑ ÐÏÓÌÅ ÓÂÒÏÓÁ, ÏÐÅÒÉÒÕÀ ÁÄÒÅÓÏÍ, ÄÁÎÎÙÍÉ, IOW É IOR, ÂÅÚ ÐÒÅÒÙ×ÁÎÉÊ É DMA. ÷ÒÏÄÅ ×ÓÅ ÐÏ ÄÁÔÁÛÉÔÕ. äÁ, ËÓÔÁÔÉ, ÎÁ ÐÒÉÅÍ ×ÓÅ ÒÁÂÏÔÁÅÔ ÚÁÍÅÞÁÔÅÌØÎÏ.
õÄÁÞÉ ÔÅÂÅ. áÎÄÒÅÊ.

Fri Dec 26 2003 20:21, Andrey Teplyakov wrote to All:

AT> íÏÅ ÐÏÞÔÅÎÉÅ, All!

AT> ÷ÏÐÒÏÓ Ë ÔÅÍ, ËÔÏ ÓÏÐÒÑÇÁÌÓÑ Ó ÜÚÅÒÎÅÔÏÍ ÎÁ ÓÁÂÖÅ×ÏÍ ÞÉÐÅ. AT> HÅ ÍÏÇÕ ÔÏÌËÏÍ ÐÏÓÌÁÔØ ËÁÄÒ. óÔÁÔÕÓ ÌÉÎÉÉ - × ÐÏÒÑÄËÅ, ÐÉÛÕ ËÏÍÁÎÄÕ × AT> TXcmd, ÚÁÔÅÍ ÄÌÉÎÕ × TXlen, ÐÒÏ×ÅÒÑÀ TXbidERR, Ready4TXNOW, ÚÁÐÉÈÉ×ÁÀ AT> ËÁÄÒ - É ÔÉÛÉÎÁ. AT> TXevent ÎÅ ÓÏÄÅÒÖÉÔ ÎÉ ÐÒÉÚÎÁËÁ ÏÛÉÂËÉ, ÎÉ ÐÒÉÚËÁËÁ ÕÓÐÅÛÎÏÊ ÏÔÐÒÁ×ËÉ. AT> ïÄÎÁËÏ, ÅÓÌÉ ÎÅ ÔÒÏÇÁÔØ TXcmd É ÏÐÅÒÉÒÏ×ÁÔØ Ó TXlen, ËÁÄÒÙ ÕÈÏÄÔ ÐÏ ×ÓÅÍ AT> ÐÒÁ×ÉÌÁÍ. æÉÇÎÑ ËÁËÁÑ-ÔÏ. ëÏÍÁÎÄÕ ÄÁ×ÁÔØ ÎÁÄÏ ×ÓÅ-ÔÁËÉ. AT> ëÒÉÓÔÁÌ 3.3÷, rev.D. AT> 16 bit I/O mode, AEN ÐÏÓÁÖÅÎ ÎÁ ÚÅÍÌÀ, SBHE ÄÅÒÇÁÅÔÓÑ ÐÏÓÌÅ ÓÂÒÏÓÁ, AT> ÏÐÅÒÉÒÕÀ ÁÄÒÅÓÏÍ, ÄÁÎÎÙÍÉ, IOW É IOR, ÂÅÚ ÐÒÅÒÙ×ÁÎÉÊ É DMA. ÷ÒÏÄÅ ×ÓÅ ÐÏ AT> ÄÁÔÁÛÉÔÕ.

ðÏÓÍÏÔÒÉ ËÁË ÓÄÅÓØ ÓÄÅÌÁÎÏ, ÍÏÖÅÔ ÐÏÍÏÖÅÔ. ðÏÌÎÙÅ ÉÓÈÏÄÎÉËÉ -
formatting link
// Copyright(c) 2001 Intrinsyc Software Inc. All rights reserved. // // Module name: // // ethernet_cs8900a.c / // tx_packet_ethernet // PURPOSE: Transmits a packet. // PARAMS: (IN) u16 * to return the MAC address. // RETURNS: 1 for success, 0 for failure. /////////////////////////////////////////////////////////////////////////////// / int tx_packet_ethernet(u8 *data, u16 size) { int i = 0; u16 temp = 0; u32 time = get_time_timer();

//initiate tx sequence writecs(TX_CMD_REQ, TX_AFTER_ALL | TX_PAD); writecs(TX_LENGTH, size);

//wait for the chip to free room in it's internal buffer while(!(readcs(BSR) & READY_FOR_TX_NOW)) { if(time < get_time_timer() - NET_TIMEOUT) { return 0; } }

//give the packet to the chip for(i = 0; i < (size / sizeof(u16));i++) {

*(volatile u16 *)(BASE_ADDR + TX_FRAME_PORT) = *(u16 *)data; data += sizeof(u16); }

//if we are sending a packet of uneven size, send the last byte. if(size % sizeof(u16)) {

*(volatile u16 *)(BASE_ADDR + TX_FRAME_PORT) = *data; }

//check for tx errors temp = readcs(TX_EVENT); if(temp & (TX_EXCESSIVE_COL | TX_JABBER | TX_LOST_CRS | TX_OUT_OF_WINDOW | TX_SQE_ERROR)) { return 0; }

//if there are no errors, assume everything is ok return 1; }

/Sam [samoutin(ÁÔ)hotbox.ru]

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required