-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathSAME54 - Asyn SPI
45 lines (32 loc) · 1.75 KB
/
SAME54 - Asyn SPI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2018/5/4
实现 Slaver SPI Asyn模式的功能
firmware : same54 spi slave demo_ok.zip
strat配置文件:same54 spi slave demo.atstart
studio 工程文件:same54spislavedemo0.cproj。
调试记录
a.通过START导入same54 spi slave demo.atstart文件,可以清晰看到 Master SPI(ETHERNET_SPI), Slaver SPI(SPI_SLV),找到如下对应关系。
Master Slaver
PB26 <--> PC05(SCK)
PB27(MOSI) ---> PC07(MOSI)
PB29(MISO) <--- PC04(MISO)
PB28 ---> PC06(_SS)
要点:因为Master 是主动发的,所以不需要_SS信号, 但Slaver是被动的,需要_SS信号通知,该工程是实现SAME54自己的Master 与Slaver通信,所以Master的_SS信号
需要额外添加,可以通过START的"PINMAX"找到相应的定义PB28被定义成了SPI_SS_A的输出。
请留意driver_init.c文件中的如下代码:
gpio_set_pin_direction(SPI_KSZ8851SNL_CS, GPIO_DIRECTION_OUT);
gpio_set_pin_level(SPI_KSZ8851SNL_CS,
// <y> Initial level
// <id> pad_initial_level
// <false"> Low
// <true"> High
true);
gpio_set_pin_function(SPI_KSZ8851SNL_CS, GPIO_PIN_FUNCTION_OFF);
备注:这段代码在PINMAX中设置PIN脚后会自动生成。
================================================================================
关键是如何把操作_SS的这段代码如何添加进Master发送程序中去。
gpio_set_pin_level(SPI_KSZ8851SNL_CS, false);
spi_m_sync_transfer(&Ethernet_SPI, &xfer);
gpio_set_pin_level(SPI_KSZ8851SNL_CS, true);
================================================================================
调试辅助:
串口(tera term)会不停得打印出Master, Slaver接收到的数据。