mFrame
載入中...
搜尋中...
無符合項目
CoreIICMaster.h
1
7#ifndef MCXA153_721B5DCB_2DC8_4E6C_B4E8_7DF3E15E63E2
8#define MCXA153_721B5DCB_2DC8_4E6C_B4E8_7DF3E15E63E2
9
10/* ***************************************************************************************
11 * Include
12 */
13#include "mframe.h"
14
15//----------------------------------------------------------------------------------------
16#include "./../core/CoreIIC.h"
17
18//----------------------------------------------------------------------------------------
19
20/* ***************************************************************************************
21 * Namespace
22 */
23namespace mcxa153::core {
24 class CoreIICMaster;
25} // namespace mcxa153::core
26
27/* ***************************************************************************************
28 * Class/Interface/Struct/Enum
29 */
83 /* *************************************************************************************
84 * Variable
85 */
86 protected:
111
112 /* *************************************************************************************
113 * Abstract Method
114 */
115
116 /* *************************************************************************************
117 * Construct Method
118 */
119 public:
138 const mcxa153::core::CoreDescriptor* descriptor = nullptr);
139
152 virtual ~CoreIICMaster(void) override;
153
154 /* *************************************************************************************
155 * Operator Method
156 */
157
158 /* *************************************************************************************
159 * Override Method - mcxa153::core::CoreIIC
160 */
161 public:
187 virtual bool init(void) override;
188
189 /* *************************************************************************************
190 * Override Method - hal::serial::IICMaster
191 */
192 public:
204 virtual hal::serial::IIC& getIIC(void) override;
205
225 virtual bool isBusy(void) override;
226
250 virtual void setClock(uint32 hz) override;
251
264 virtual uint32 getClock(void) override;
265
291 virtual bool beginWrite(uint16 address) override;
292
318 virtual bool beginRead(uint16 address) override;
319
346 virtual bool abort(void) override;
347
361 virtual void setEventError(
362 hal::serial::IICMaster::EventError* event = nullptr) override;
363
364 /* *************************************************************************************
365 * Override Method - hal::serial::IICMaster::EventError
366 */
367 public:
393 virtual void onNanAcknowledgeEvent(int queueRemainingCount) override;
394
424 virtual void onBusBusyEvent(int queueRemainingCount) override;
425
426 /* *************************************************************************************
427 * Override Method - hal::InterruptEvent
428 */
429 public:
459 virtual void interruptEvent(void) override;
460
461 /* *************************************************************************************
462 * Public Method
463 */
464 public:
487 bool probeDevice(uint16 address);
488
508 int scanBus(uint16* deviceList, int maxDevices);
509
537 bool recoverBus(void);
538
539 /* *************************************************************************************
540 * Protected Method
541 */
542 protected:
566 void masterReset(void);
567
599 bool transfer(uint16 address, bool direction = true);
600
601 /* *************************************************************************************
602 * Private Method
603 */
604 private:
620 void configureMaster(void);
621
641 bool waitBusIdle(uint32 timeoutMs = 100);
642
664 void handleArbitrationLoss(void);
665
666 /* *************************************************************************************
667 * Static Variable
668 */
669
670 /* *************************************************************************************
671 * Static Method
672 */
673};
674
675/* ***************************************************************************************
676 * End of file
677 */
678
679#endif /* MCXA153_721B5DCB_2DC8_4E6C_B4E8_7DF3E15E63E2 */
MCXA153 I2C通訊控制器
Definition CoreIIC.h:78
Select
I2C控制器選擇枚舉
Definition CoreIIC.h:441
MCXA153 I2C主控制器
Definition CoreIICMaster.h:82
bool probeDevice(uint16 address)
檢查指定從設備地址是否存在
virtual void setClock(uint32 hz) override
設定I2C通訊時鐘頻率
virtual void interruptEvent(void) override
I2C主控制器中斷事件統一處理
virtual bool beginRead(uint16 address) override
開始讀取操作
bool recoverBus(void)
執行I2C匯流排恢復操作
virtual void onBusBusyEvent(int queueRemainingCount) override
匯流排忙碌錯誤事件回調
virtual uint32 getClock(void) override
取得目前I2C通訊時鐘頻率
virtual ~CoreIICMaster(void) override
解構I2C主控制器物件
bool transfer(uint16 address, bool direction=true)
執行I2C傳輸操作
void masterReset(void)
重設主控制器狀態
int scanBus(uint16 *deviceList, int maxDevices)
掃描I2C匯流排上的所有設備
virtual hal::serial::IIC & getIIC(void) override
取得I2C基礎介面參考
hal::serial::IICMaster::EventError * vEventError
錯誤事件處理器指標
Definition CoreIICMaster.h:110
virtual void onNanAcknowledgeEvent(int queueRemainingCount) override
NAK應答錯誤事件回調
CoreIICMaster(CoreIIC::Select select, const mcxa153::core::CoreDescriptor *descriptor=nullptr)
建構I2C主控制器物件
virtual bool abort(void) override
中止I2C操作
virtual bool init(void) override
初始化I2C主控制器
virtual bool beginWrite(uint16 address) override
開始寫入操作
virtual void setEventError(hal::serial::IICMaster::EventError *event=nullptr) override
設定錯誤事件處理器
virtual bool isBusy(void) override
檢查主控制器忙碌狀態
Definition glikey/Mask.h:22
[Interface] IIC基礎介面
Definition IIC.h:38
[Interface] IIC錯誤事件處理器
Definition IICMaster.h:156
[Interface] IIC主端設備介面
Definition IICMaster.h:39
Definition CoreDescriptor.h:31