• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: 有關PIC18F425當成SMBUS SLAVER WRITE WORD的問題,請各位幫忙
#19
初級會員
初級會員


查看用戶資訊
看你的功能,看能只能用软件模拟I2C SLAVE了, 这样我想就可以达到软件控制ACK的目的!

發表於: 2006/11/11 21:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#18
高級會員
高級會員


查看用戶資訊
嗯,瞭解了,感謝版主詳細的回覆。

發表於: 2006/11/10 18:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#17
版主
版主


查看用戶資訊
1. ACK 的回覆是硬體產生的,Slave 無法用軟體方式回覆(Master 可以回覆 ACK 或NACK)。只要是 Slave address match 接下來的資料就是屬於該Slave的資料接收到ㄧ筆資料由硬體自動回覆ACK,直到STOP bit 出現,所以不會有來不及發ACK or NACK的問題

2. I2C 資料不是在ACK前檢查,是在中斷收進來後再檢查,ACK的回應不關資料的判斷,MASTER 是藉著ACK訊號為LOW時確定資料有被正確的接收。如果你想用軟體方式回ACK的話就有兩種不可能:a. 400K的速度你的MCU要跑到多快? 2. I2C的硬體設計無法讓你用軟體回ACK

發表於: 2006/11/10 16:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#16
高級會員
高級會員


查看用戶資訊

謝謝版主的回覆
我怕版主不能瞭解我的問題,所以我重新敘述一次。
我主要的目的是想要我的mcu在當成slaver receiver時能夠有辦法在master產生第九個clk時發送一個nack的信號到bus上。

可能需要如此做的情形如下
情況一:
當bus上有一個start bit後,接下來的address剛好與我的slaver的address匹配,所以slaver發送了一個ack告知master,再接下來master又送出一筆command,我的slaver為了要確認這個command是
有效的所以我必須先把bus上的command與slaver中的command做比較,確定是有效的才發送一個ack給master,否則就要發送一個nack告知master,command是無效的請不要再送下一筆資料了。
情況二:
當bus上的ADDRESS與slaver的address匹配後,命令也正確,之後SLAVER接收了MASTER發送的兩筆資料,與PEC BYTE,那麼如果我想要在ACK PULSE前檢查整筆資料是否有錯誤,如果錯誤,則在ACK PULSE產生時發送NACK,如果正確則在ACK PLUSE產生時發送ACK。
像這類的情況下就必須要在最後接收到的數據後發送一個NACK的信號,不是嗎???
所以我才會一直認為MCU要能在判斷資料正確與否後發送一個NACK的能力。

發表於: 2006/11/10 15:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#15
版主
版主


查看用戶資訊
ACK 是 I2C Slave 有收到資料所回的低電位,而NACK是指所有的Slave都沒有人理會這個資料料也就不會有 slave 將訊號拉LOW 所以就成了NACK 了

發表於: 2006/11/9 13:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#14
高級會員
高級會員


查看用戶資訊
我看了SMBUS的標準後,在第九頁及第十頁中有說到
NACK的可能出現的狀態:
The slave device is busy performing a real time task, or data requested are not available. The master upon detection of the NACK condition must generate a STOP condidion to abort the transfer........
The slave device detects an invalid command or invalid data. In this case the slave device must NACK the received byte. THe master upon detection of this condition must generate a STOP condition and retry the transcation.
If a master-receiver is involved in the transaction it must signal the end of data to the slave-transmitter by generationg an NACK on the last byte that was clocked out by the slave. The slave-transmitter must release the data line to allow the master to generate a STOP condition.
並且參考了這個網址http://tech.digitimes.com.tw/print.as ... 70549D37248256FF900461B44
他說明了SMBUS與IIC在發送ACK/NACK信號上的不同,NACK為SMBUS中強制必備,在IIC中式選擇性的,而也不是只有在ADDRESS不匹配時才會發生,有時候也會在RECEIVER沒有準備好接受BUS上的DATA時,可經由NACK的發送告知TRANSMITTER,目前我是要利用SMBUS當成控制介面,NACK的發送與否對我來說就很重要了,在找尋MCU時我也找了很久才發現PIC系列上好像只有PIC18F之後的系列有寫到支援SMBUS可是如果是不能由使用者判斷何時該送出ACK/NACK的信號時,就沒辦法完全的符合標準所需,不過應該是可以藉由其他的方法來達成的,例如多一支PIN腳來拉低SCL不過還沒試過,所以還不確定,謝謝版主與EBOWANG的討論,讓我一方面能夠加深映象,也能夠發現之前沒有注意到的小細節。

發表於: 2006/11/6 22:03
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#13
版主
版主


查看用戶資訊
davens 建議先把 I2C 的規範先了解ㄧ下,如果可以的話順便在讀一下 SMbus 與I2C 有何不同。NACK 不是 Slave 回的,Slave會在收到屬於自己的command 後回 ACK, 如果Master送出的 Slave Address不對就不會有人回ACK,這時SDA 回在Hi電位也就是NACK訊號。
ACK訊號Slave會自動答覆,Slave端的軟體不用操心

發表於: 2006/11/6 18:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#12
高級會員
高級會員


查看用戶資訊
那麼這樣說來,PIC上的IIC硬體介面,在當成SLAVER時,沒有辦法完全符合SMBUS PROTOCOL因為它沒有辦法在必要的時候發送NACK,而且MCU也不能夠只當SLAVER去接收DATA一定還需要具備發送的功能,因為如果發送的COMMAND不是SLAVER中的有效COMMAND還需要由SLAVER想辦法告知MASTER數據送錯了或是命令無效,感覺上就變的不太聰明
因為SMBUS的WRITE WORD PROTOCOL中SLAVER除了發送ACK與NACK信號外,就沒有其他的方式告知MASTER ,BUS上的信號有錯,如果SLAVER還支援PEC的功能,那麼在接收完CRC的數據後,也沒辦法立刻告知MASTER,DATA BYTE中有錯誤需要重送
還是要改成用軟體來實現??又或者需要犧牲一支PIN腳,將SCL拉低
以彌補硬體上的缺陷
謝謝ebowang 與版主提供建議


發表於: 2006/11/6 17:27
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#11
初級會員
初級會員


查看用戶資訊
BTFSS SSPSTAT,BF ;依照DATASHEET上的時序圖,BF自動設置時為第八個CLK下緣
GOTO $-1
BCF SSPCON1,CKP ;延長拉低CLK的時間

以上的CODE,与硬件去产生第9个脉冲是异步的并行事件,所以,也许在你CLR CKP时,第9个脉冲已经产生了啊.

不知道我的想法对不对.

其实你完全没必要这样吧,相当与去破坏了I2C通讯的时序(当然我不知道你这样应用的目的)

發表於: 2006/11/6 17:04
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關smbus的問題
#10
版主
版主


查看用戶資訊
有關CKP的說明:
PIC的I2C每接收到依筆寫入的資料時( Write Commans + write Data + Write Data+ ...)
在Write Data資料的第九個Clock產生後(Ack) , Slave 就會產生中斷這時硬體會將CKP清為0並將CLK的腳位拉成LOW讓Master暫停送資料過來以免發生Overrun的現象,待Slave處理完畢接收資料後要離開中斷程式前再將CKP設為1後CLK的訊號就會變成Hi這時Master就可以傳送下ㄧ筆資料給Slave了。

發表於: 2006/11/6 16:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------