富士通工控板DIY之CAN总线双板连接成功
看图:
具体情况是:
1,使用双板连接,发送命令点亮对方的LED。
2,具体位速率等没更改。
3,和其他的CAN板的测试以后再试。
4,连接CANRX腿的两个电阻没用。直接用了个0偶电阻和CPU连接了。具体是要和否,要多大没仔细试。
5,使用环境IAR6.30
6,小技巧:要让在IA R下运行的程序能不用调试器也能运行,必须
设置JP22 为不连接。这样下载之后去掉JTAG照样运行。
7, 小提示:富士通最后的包只支持IAR6.3 IAR6.1编译不过(有些变动)。MDK编译通过,但跑不起来。
8,例子代码包:
mb9bf50xr_can-v13test.rar
(1.55 MB, 下载次数: 58)
9:例子更改内容提示:
A:CAN0总线接口端口初始化:
static void InitPort(void)
{
/* Set I/O Port */
/* P24:RX1_0, P25:TX1_0, P70:TX0_0, P71:RX0_0 */
FM3_GPIO->PFR2 = FM3_GPIO->PFR2 | 0x00000030;
//FM3_GPIO->PFR7 = FM3_GPIO->PFR7 | 0x00000003;
FM3_GPIO->PFR6 = FM3_GPIO->PFR6 | 0x0000000c; //要改P62 tx0_2 P63 rx0_2
FM3_GPIO->EPFR09 = FM3_GPIO->EPFR09 | 0xff000000;//0x44000000;
}
B:加入了GPIO的LED作为提示
C: 加入了循环发送和接收
D:
CAN例子中最重要的结构:
CAN设备IO块结构:这个结构包含了配置和CAN对象,和CAN的初始化函数,模式设置函数,发送,接收,总线关闭函数。中断函数。基本上是包括了CAN的
操作函数和参数等。
/*
* CAN Device IO Block Structure
*/
typedef struct {
/* changed by the user application before call to Init. */
CanDev_CFG Cfg;
CanDev_OBJ Obj;
/* Initialized by CAN driver. */
int32_t (*Init)(void);
int32_t (*UnInit)(void);
int32_t (*ModeSet)(int32_t Mode);
int32_t (*DataTx)(CanDev_PDU *pPdu, int32_t *pError);
int32_t (*DataRx)(CanDev_PDU *pPdu, int32_t *pError);
int32_t (*BusOff)(int32_t *pError);
void (*CallBackIrq)(int32_t Status, uint32_t ObjId);
} CanDev_IOB;
后续讲加入些新的使用经验。
[
本帖最后由 damiaa 于 2012-7-23 13:45 编辑 ]