我需要通过I2C将外部传感器连接到DA14695 WIRA USB开发套件。司机看起来相当简单,但我有一个关于初始化界面的问题。代码使用汇编程序指令创建要调用的init函数列表(bus_init_section),但如何将i2c总线的初始化添加到此列表中?作为一个更一般的问题,使用此机制添加外围支持的方法是什么?
嗨apdobaj.
通常,我们强烈建议使用适配器来访问硬件外围设备,因为不仅提供对外设的访问,而且还确保当前正在访问的其他任务,暂停其操作,直到外围设备再次释放。因此,如果另一个任务在同一时间访问相同的外围设备,则不必担心。此外,在睡眠模式下,所有外围块都断电。
如果我理解正确,你就是如何初始化I2C外设块。请看看DA1469X教程I2C适配器概念从支持门户。您将找到所有适当的步骤TOI初始化并使用I2C适配器。
希望这可以帮助!如果我误解了你的问题,请澄清一下。
谢谢,PM_Dialog
我仍然有问题试图让这个i2c驱动程序工作。驱动程序重新注册界面,因为它认为TX FIFO具有其数据。我放置了一些测试代码来禁用重新注册并清除FIFO,但现在代码在AD_I2C_WRITE中挂起对OS_EVENT_WAIT的调用。附加的代码应该告诉您所需的一切。从Main.c中的I2C_INIT方法开始。所有更改都使用关键词Apdobaj评论。
嗨apdobaj,
我看一下main.c文件的文件,所有i2c事务都在system_init()中调用的i2c_init()中实现。
system_init()任务是最高优先级任务,该任务应仅包含初始化系统和应用程序的呼叫。它应该具有典型项目中的默认值,它应该创建/初始化资源(例如互斥锁,定时器,结构),创建应用程序的初始任务。
system_init()任务不得用于实现应用程序的状态计算机或通常的任何功能,例如I2C事务。关于I2C,应在system_init()中创建一个新任务,以正常优先级运行应用程序状态机并执行I2C事务。
在我以前的回复中,我建议看看DA1469X教程I2C适配器概念这样您就可以了解如何使用I2C适配器。
您可以在教程中看到,System_Init()创建PRVI2CTASK_EEPROM()任务,其中I2C适配器初始化应在开始(AD_I2C_INIT)一旦完成一次。此任务还执行EEPROM_DATA_WRITER()以打开适配器(AD_I2C_OPEN())并执行一些I2C写入事务(AD_I2C_WRITE())。完成I2C活动后,应关闭适配器(AD_I2C_CLOSE())。我建议首先检查建议的教程并在您自己的项目中实现相同的功能。
好的,我按照了教程,现在正在在尝试初始化LCD时获得一辆总线故障。请指教。
有人有吗?
感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.
我们将在未来几天修复错误/优化搜索和标记。
这张票已经被移植到:https://www.dialog-seminile.com/forums/post/dialog-martbond-bluetooth-low-energy-%2%80%93-hardware-device-reference-designs/peripheral.
为延迟道歉 - 我会尽快在新的论坛线程上回复你。
嗨apdobaj.
通常,我们强烈建议使用适配器来访问硬件外围设备,因为不仅提供对外设的访问,而且还确保当前正在访问的其他任务,暂停其操作,直到外围设备再次释放。因此,如果另一个任务在同一时间访问相同的外围设备,则不必担心。此外,在睡眠模式下,所有外围块都断电。
如果我理解正确,你就是如何初始化I2C外设块。请看看DA1469X教程I2C适配器概念从支持门户。您将找到所有适当的步骤TOI初始化并使用I2C适配器。
希望这可以帮助!如果我误解了你的问题,请澄清一下。
谢谢,PM_Dialog
我仍然有问题试图让这个i2c驱动程序工作。驱动程序重新注册界面,因为它认为TX FIFO具有其数据。我放置了一些测试代码来禁用重新注册并清除FIFO,但现在代码在AD_I2C_WRITE中挂起对OS_EVENT_WAIT的调用。附加的代码应该告诉您所需的一切。从Main.c中的I2C_INIT方法开始。所有更改都使用关键词Apdobaj评论。
嗨apdobaj,
我看一下main.c文件的文件,所有i2c事务都在system_init()中调用的i2c_init()中实现。
system_init()任务是最高优先级任务,该任务应仅包含初始化系统和应用程序的呼叫。它应该具有典型项目中的默认值,它应该创建/初始化资源(例如互斥锁,定时器,结构),创建应用程序的初始任务。
system_init()任务不得用于实现应用程序的状态计算机或通常的任何功能,例如I2C事务。关于I2C,应在system_init()中创建一个新任务,以正常优先级运行应用程序状态机并执行I2C事务。
在我以前的回复中,我建议看看DA1469X教程I2C适配器概念这样您就可以了解如何使用I2C适配器。
您可以在教程中看到,System_Init()创建PRVI2CTASK_EEPROM()任务,其中I2C适配器初始化应在开始(AD_I2C_INIT)一旦完成一次。此任务还执行EEPROM_DATA_WRITER()以打开适配器(AD_I2C_OPEN())并执行一些I2C写入事务(AD_I2C_WRITE())。完成I2C活动后,应关闭适配器(AD_I2C_CLOSE())。我建议首先检查建议的教程并在您自己的项目中实现相同的功能。
谢谢,PM_Dialog
好的,我按照了教程,现在正在在尝试初始化LCD时获得一辆总线故障。请指教。
有人有吗?
嗨apdobaj,
感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.
我们将在未来几天修复错误/优化搜索和标记。
这张票已经被移植到:https://www.dialog-seminile.com/forums/post/dialog-martbond-bluetooth-low-energy-%2%80%93-hardware-device-reference-designs/peripheral.
为延迟道歉 - 我会尽快在新的论坛线程上回复你。
谢谢,PM_Dialog