stm32f103开机自检
时间: 2023-09-28 07:05:07 浏览: 287
stm32f103
在STM32F103的开机自检过程中,可以通过检查AT24CXX芯片是否正常来验证芯片的正常工作。具体的实现方法如下所示:
首先,需要调用iic_start函数产生起始信号,并使用iic_send_byte函数发送第一个字节数据设备写地址。然后,通过iic_wait_ack函数等待24CXX设备返回应答信号。
接着,继续发送第二个1字节数据内存地址addr,并等待接收应答后,重新调用iic_start函数产生起始信号。这一次的设备方向改变了,需要调用iic_send_byte函数发送设备读地址,并使用iic_wait_ack函数去等待设备返回应答信号。同时,使用iic_read_byte函数去读取从从机发出来的数据。
由于iic_read_byte函数的形参是0,所以在获取完一个字节的数据后,主机发送非应答信号,停止数据传输,最终调用iic_stop函数产生停止信号,返回从从机addr中读取到的数据。
为了方便检测24CXX芯片是否正常工作,在代码中也定义了一个检测函数at24cxx_check。该函数的检测原理是,在器件的末地址写入0X55,然后再读取,如果读取值为0X55,则表示检测正常。否则,表示检测失败。
在具体实现时,首先定义一个变量temp和一个地址变量addr,然后调用at24cxx_read_one_byte函数读取addr地址处的数据,并将结果存储在temp中。接着,通过与0X55进行比较,判断是否检测正常。如果读取数据正常,则返回0。否则,排除第一次初始化的情况,先将0X55写入addr地址,再通过at24cxx_read_one_byte函数读取255地址处的数据,并将结果存储在temp中。再次与0X55进行比较,如果相等,则表示检测正常,返回0。如果不相等,则表示检测失败,返回1。
综上所述,通过以上的开机自检过程和检测函数,可以实现对STM32F103的芯片正常工作进行验证。
阅读全文