新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA的CAN總線通信接口的設計

        基于FPGA的CAN總線通信接口的設計

        作者: 時間:2010-12-14 來源:網絡 收藏


        2 邏輯控制程序
        2.1 SJA1000邏輯控制

        由于SJA1000地址線與數據總線復用,不僅僅要產生SJA1000讀寫控制引腳的信號邏輯,還需要模擬單片機等處理器產生對SJA1000的尋址信號,實際上是一個向SJA1000寫地址的過程。根據SJA1000技術手冊的時序要求,要完成對SJA1000內寄存器的正確讀寫,接口邏輯必須在地址鎖存信號ALE為高電平時將SJA1000的寄存器地址當作數據寫入,然后在ALE和片選信號為低電平后使能SJA1000的讀寫控制信號(WR或RD)。SJA1000的邏輯控制采用狀態機的方式完成,狀態機流程圖如圖4所示。起始態為IDLE態,當接收到數據讀寫等命令時,進入ADDR-ESS態,向SJA1000寫入相應寄存器的地址值。然后根據命令類型決定下一個態是寫寄存器狀態(WR1~WR3)還是讀寄存器狀態(RD1~RD4)。以寫寄存器為例,在WR1態ALE、等信號置為非有效態。將置為有效狀態;在WR2態ALE、為非有效態.而將信號置為有效態,在時鐘的下降沿將數據寫入寄存器。WR3狀態保持有效,WR信號變為無效,進入IDLE態,一次寫周期完成。

        本文引用地址:http://www.104case.com/article/191443.htm


        2.2 SJA1000讀寫數據流程控制
        對SJA1000控制程序包括SJA1000初始化、SJA1000讀數據、SJA1000寫數據等部分。SJA1000的初始化是在復位模式下進行的,在復位模式下分別設置時鐘分頻器CDR、總線定時器(BTR0、BTR1)、輸出控制寄存器(OCR)等重要寄存器。SJA1000通信波特率由總線定時器決定,需要與后端節點的波特率相同才能進行節點間的正常通信。FPGA上電后需要延時一段時間.等待SJA1000復位完成才能進行SJA1000初始化。初始化仿真波形如圖5(a)所示。SJA1000內部有一個接收緩沖器和一個發送緩沖器。FPGA對SJA1000的讀寫操作,實際上對這兩個緩沖器的讀寫控制。當FPGA接收總線數據時首先讀取SJA1000中斷寄存器IR判斷是否有接收中斷。如果有接收中斷到來則開始讀取緩沖器內的8字節數據,然后釋放接收緩沖器(寫命令寄存器CMR)。使用Xilinx公司的Chipseope軟件進行板上測試,測試數據為(E0,E1,……E7),抓取到的波形如圖5(b)所示。FPGA讀寫SJA1000的流程控制圖如圖6所示。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 云南省| 榆林市| 和林格尔县| 东乌珠穆沁旗| 民权县| 遵化市| 宁夏| 宜川县| 潼关县| 嘉祥县| 霍林郭勒市| 远安县| 鄯善县| 富蕴县| 金溪县| 陵水| 江阴市| 舒城县| 石棉县| 乐都县| 昆明市| 隆回县| 辉县市| 垦利县| 霍山县| 阿巴嘎旗| 南昌市| 永和县| 北京市| 常德市| 桓仁| 天峨县| 四子王旗| 中卫市| 泰顺县| 高清| 奉新县| 平塘县| 镇宁| 屯门区| 平遥县|