因為硬體控制有時會發生錯誤,而軟體模擬準確性更高,所以,一般使用軟體模擬
軟體模擬,就是按照iic的時序邏輯來模擬電平的產生。
如圖所示,我們需要自己模擬每一種訊號的發生。起始訊號,停止訊號,資料傳送,資料接受,傳送ack和nack,等待應答訊號。
算了。。。炸了,一直改不對,找不到錯在哪。。。。
錯**如下
#include
"i2c.h"
void
i2c_eeprom_config()
void
start()
void
stop()
uint8_t read_byte()
//讀乙個位元組
gpio_resetbits
(gpiob,gpio_pin_6)
;//scl低電平
delay()
;return data;
}void
write_byte
(uint8_t data)
gpio_resetbits
(gpiob,gpio_pin_6)
;//scl低電平
delay()
;}void
i2csendack()
void
i2csendnotack()
uint8_t wait_ack()
void
delay()
void
write_eeprom_byte
(uint8_t addr,uint8_t data)
uint8_t read_eeprom_byte
(uint8_t addr)
void
usrt_init()
//在這裡,我們要讓開發板和計算機進行通訊
intfputc
(int ch,file* f)
//printf的呼叫,用來接受開發板的資料
intfgetc
(file* f)
//scanf的呼叫,用來向開發板傳送資料
反正,在比賽時,好像是給出了iic的軟體模擬時序的**,然後需要自己寫的**是將資料從eeprom讀取和寫入的部分。
/**
* @說明 從at24c02指定位址讀出乙個位元組資料
* @引數 address:at24c02內部儲存位址
* @返回值 val:讀出資料
*/uint8_t
x24c02_read
(uint8_t address)
/** * @說明 向at24c02指定位址寫入乙個位元組資料
* @引數 address:at24c02內部儲存位址
* @引數 info:寫入資料
* @返回值 none
*/void
x24c02_write
(unsigned
char address,
unsigned
char info)
模擬IC流片經驗分享
模擬 ic設計,在國內興起的比較晚,目前成熟的很少,大家所作的晶元基本都是在仿ti maxim lt 等國際大廠的產品,做到 pin to pin specification 也是基本相同,一句話,就是替換原則。由於國內 ic設計公司基本沒有自己的工藝廠,用的比較多的就是 tsmc chartere...
IC6 電子控制系統常見控制干擾方法
硬體系統的抗干擾方法 在電子電路系統設計中,抗干擾性是必須要考慮的問題。抗干擾性的好壞,直接影響到系統能否正常的工作。形成干擾的主要因素有三點 干擾源 傳播路徑 敏感元件。基於這三個因素,針對本設計中涉及的內容將採取如下措施 在驅動電路設計中增加了續流二極體,消除繼電器線圈斷開時而產生的反電動勢干擾...
軟體變更控制
軟體生存期內全部的軟體配置是軟體產品的真正代表,必須使其保持精確。軟體工程過程中某一階段的變更,均要引起軟體配置的變更,這種變更必須嚴格加以控制和管理,保持修改資訊,並把精確 清晰的資訊傳遞到軟體工程過程的下一步驟。變更控制包括建立控制點和建立報告與審查制度。對於乙個大型的軟體來說,不加控制的變更很...