经过几番测试研究,又上网找资料,终于在一个
论坛里,发现一个官方技术人员关于MC3172串口通讯的回帖,串口速率的设置,不能只设置波特率,需要根据芯片主频,来设定合适的分频数,以及芯片外设的主频率和通讯波特率,并且主频频率于波特率的比值不能超过255, 那这一下就明白了,只修改通讯速率是不行的。
那么以这次与51开发板通讯所需要的9600通讯来说,是这样计算的,因为使用的是200M(实际是192076800Hz) 先进行1/256分频,得到外设的工作频率 750300, 然后检验 6002400/9600=78.1, 78 < 255, 即合适。如果这里分频选择小了,那么外设工作频率就大,比如选择32分频,那么外设工作频率为192076800Hz/32=6002400, 再检查倍率6002400/9600=625, > 255, 则无法正常工作。
因此了解这个规则后,就可以随心所欲的设置了,同时如果在配置线程时,选择了不同的晶振,也需要修改相关的参数,串口才能正常的工作。
最后在选择内部rc晶振下,修改两行代码如下,即可以正确的与51单片机进行通讯了。
INTDEV_SET_CLK_RST(gpcom_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
改为
INTDEV_SET_CLK_RST(gpcom_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV256));
GPCOM_SET_COM_SPEED(gpcom_sel,12000000,115200);
改为
GPCOM_SET_COM_SPEED(gpcom_sel,750300,9600);
最后终于在51单片机上收到MC3172板子发来正确
的数据了。