Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
u010088926
rt-thread
提交
e7f78855
R
rt-thread
项目概览
u010088926
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e7f78855
编写于
6月 10, 2018
作者:
Z
zhuangwei123
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bsp/ls1cdev]drv_spi.c astyle格式化代码
上级
b05a5a6f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
30 deletion
+30
-30
bsp/ls1cdev/drivers/drv_spi.c
bsp/ls1cdev/drivers/drv_spi.c
+30
-30
未找到文件。
bsp/ls1cdev/drivers/drv_spi.c
浏览文件 @
e7f78855
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
*
*
* Change Logs:
* Change Logs:
* Date Author Notes
* Date Author Notes
* 2017-11-02
勤为本
first version
* 2017-11-02
勤为本
first version
* 2018-06-09 zhuangwei add spi0 cs0 support,remove msd_init
* 2018-06-09 zhuangwei add spi0 cs0 support,remove msd_init
*/
*/
...
@@ -43,14 +43,14 @@ static rt_err_t configure(struct rt_spi_device *device, struct rt_spi_configurat
...
@@ -43,14 +43,14 @@ static rt_err_t configure(struct rt_spi_device *device, struct rt_spi_configurat
static
rt_uint32_t
xfer
(
struct
rt_spi_device
*
device
,
struct
rt_spi_message
*
message
);
static
rt_uint32_t
xfer
(
struct
rt_spi_device
*
device
,
struct
rt_spi_message
*
message
);
static
struct
rt_spi_ops
ls1c_spi_ops
=
static
struct
rt_spi_ops
ls1c_spi_ops
=
{
{
.
configure
=
configure
,
.
configure
=
configure
,
.
xfer
=
xfer
.
xfer
=
xfer
};
};
static
rt_err_t
configure
(
struct
rt_spi_device
*
device
,
static
rt_err_t
configure
(
struct
rt_spi_device
*
device
,
struct
rt_spi_configuration
*
configuration
)
struct
rt_spi_configuration
*
configuration
)
{
{
struct
rt_spi_bus
*
spi_bus
=
NULL
;
struct
rt_spi_bus
*
spi_bus
=
NULL
;
...
@@ -70,28 +70,28 @@ static rt_err_t configure(struct rt_spi_device *device,
...
@@ -70,28 +70,28 @@ static rt_err_t configure(struct rt_spi_device *device,
spi_base
=
ls1c_spi_get_base
(
SPIx
);
spi_base
=
ls1c_spi_get_base
(
SPIx
);
{
{
//
使能SPI控制器,master模式,关闭中断
//
使能SPI控制器,master模式,关闭中断
reg_write_8
(
0x53
,
spi_base
+
LS1C_SPI_SPCR_OFFSET
);
reg_write_8
(
0x53
,
spi_base
+
LS1C_SPI_SPCR_OFFSET
);
//
清空状态寄存器
//
清空状态寄存器
reg_write_8
(
0xc0
,
spi_base
+
LS1C_SPI_SPSR_OFFSET
);
reg_write_8
(
0xc0
,
spi_base
+
LS1C_SPI_SPSR_OFFSET
);
// 1
字节产生中断,采样(读)与发送(写)时机同时
// 1
字节产生中断,采样(读)与发送(写)时机同时
reg_write_8
(
0x03
,
spi_base
+
LS1C_SPI_SPER_OFFSET
);
reg_write_8
(
0x03
,
spi_base
+
LS1C_SPI_SPER_OFFSET
);
//
关闭
SPI flash
//
关闭S
PI flash
val
=
reg_read_8
(
spi_base
+
LS1C_SPI_SFC_PARAM_OFFSET
);
val
=
reg_read_8
(
spi_base
+
LS1C_SPI_SFC_PARAM_OFFSET
);
val
&=
0xfe
;
val
&=
0xfe
;
reg_write_8
(
val
,
spi_base
+
LS1C_SPI_SFC_PARAM_OFFSET
);
reg_write_8
(
val
,
spi_base
+
LS1C_SPI_SFC_PARAM_OFFSET
);
// spi flash
时序控制寄存器
// spi flash
时序控制寄存器
reg_write_8
(
0x05
,
spi_base
+
LS1C_SPI_SFC_TIMING_OFFSET
);
reg_write_8
(
0x05
,
spi_base
+
LS1C_SPI_SFC_TIMING_OFFSET
);
}
}
// baudrate
// baudrate
ls1c_spi_set_clock
(
spi_base
,
configuration
->
max_hz
);
ls1c_spi_set_clock
(
spi_base
,
configuration
->
max_hz
);
//
设置通信模式(时钟极性和相位
)
//
设置通信模式(时钟极性和相位)
if
(
configuration
->
mode
&
RT_SPI_CPOL
)
// cpol
if
(
configuration
->
mode
&
RT_SPI_CPOL
)
// cpol
{
{
cpol
=
SPI_CPOL_1
;
cpol
=
SPI_CPOL_1
;
...
@@ -116,7 +116,7 @@ static rt_err_t configure(struct rt_spi_device *device,
...
@@ -116,7 +116,7 @@ static rt_err_t configure(struct rt_spi_device *device,
}
}
static
rt_uint32_t
xfer
(
struct
rt_spi_device
*
device
,
static
rt_uint32_t
xfer
(
struct
rt_spi_device
*
device
,
struct
rt_spi_message
*
message
)
struct
rt_spi_message
*
message
)
{
{
struct
rt_spi_bus
*
spi_bus
=
NULL
;
struct
rt_spi_bus
*
spi_bus
=
NULL
;
...
@@ -149,7 +149,7 @@ static rt_uint32_t xfer(struct rt_spi_device *device,
...
@@ -149,7 +149,7 @@ static rt_uint32_t xfer(struct rt_spi_device *device,
ls1c_spi_set_cs
(
spi_base
,
cs
,
0
);
ls1c_spi_set_cs
(
spi_base
,
cs
,
0
);
}
}
//
收发数据
//
收发数据
send_ptr
=
message
->
send_buf
;
send_ptr
=
message
->
send_buf
;
recv_ptr
=
message
->
recv_buf
;
recv_ptr
=
message
->
recv_buf
;
while
(
size
--
)
while
(
size
--
)
...
@@ -181,7 +181,7 @@ static rt_uint32_t xfer(struct rt_spi_device *device,
...
@@ -181,7 +181,7 @@ static rt_uint32_t xfer(struct rt_spi_device *device,
#ifdef RT_USING_SPI0
#ifdef RT_USING_SPI0
struct
ls1c_spi
ls1c_spi0
=
struct
ls1c_spi
ls1c_spi0
=
{
{
.
SPIx
=
LS1C_SPI_0
,
.
SPIx
=
LS1C_SPI_0
,
};
};
...
@@ -191,7 +191,7 @@ static struct rt_spi_bus spi0_bus;
...
@@ -191,7 +191,7 @@ static struct rt_spi_bus spi0_bus;
#ifdef RT_USING_SPI1
#ifdef RT_USING_SPI1
struct
ls1c_spi
ls1c_spi1
=
struct
ls1c_spi
ls1c_spi1
=
{
{
.
SPIx
=
LS1C_SPI_1
,
.
SPIx
=
LS1C_SPI_1
,
};
};
...
@@ -201,10 +201,10 @@ static struct rt_spi_bus spi1_bus;
...
@@ -201,10 +201,10 @@ static struct rt_spi_bus spi1_bus;
/*
/*
*
初始化并注册龙芯1c的spi总线
*
初始化并注册龙芯1c的spi总线
* @SPI SPI
总线,比如LS1C_SPI_0,
LS1C_SPI_1
* @SPI SPI
总线,比如LS1C_SPI_0, L
S1C_SPI_1
* @spi_bus_name
总线名字
* @spi_bus_name
总线名字
* @ret
* @ret
*/
*/
rt_err_t
ls1c_spi_bus_register
(
rt_uint8_t
SPI
,
const
char
*
spi_bus_name
)
rt_err_t
ls1c_spi_bus_register
(
rt_uint8_t
SPI
,
const
char
*
spi_bus_name
)
{
{
...
@@ -237,15 +237,15 @@ int ls1c_hw_spi_init(void)
...
@@ -237,15 +237,15 @@ int ls1c_hw_spi_init(void)
pin_set_purpose
(
80
,
PIN_PURPOSE_OTHER
);
pin_set_purpose
(
80
,
PIN_PURPOSE_OTHER
);
pin_set_purpose
(
83
,
PIN_PURPOSE_OTHER
);
//cs2 - SD card
pin_set_purpose
(
83
,
PIN_PURPOSE_OTHER
);
//cs2 - SD card
pin_set_purpose
(
82
,
PIN_PURPOSE_OTHER
);
//cs1
pin_set_purpose
(
82
,
PIN_PURPOSE_OTHER
);
//cs1
pin_set_purpose
(
81
,
PIN_PURPOSE_OTHER
);
//cs0
pin_set_purpose
(
81
,
PIN_PURPOSE_OTHER
);
//cs0
pin_set_remap
(
78
,
PIN_REMAP_DEFAULT
);
pin_set_remap
(
78
,
PIN_REMAP_DEFAULT
);
pin_set_remap
(
79
,
PIN_REMAP_DEFAULT
);
pin_set_remap
(
79
,
PIN_REMAP_DEFAULT
);
pin_set_remap
(
80
,
PIN_REMAP_DEFAULT
);
pin_set_remap
(
80
,
PIN_REMAP_DEFAULT
);
pin_set_remap
(
83
,
PIN_REMAP_DEFAULT
);
//cs2 - SD card
pin_set_remap
(
83
,
PIN_REMAP_DEFAULT
);
//cs2 - SD card
pin_set_remap
(
82
,
PIN_REMAP_DEFAULT
);
//CS1
pin_set_remap
(
82
,
PIN_REMAP_DEFAULT
);
//CS1
pin_set_remap
(
81
,
PIN_REMAP_DEFAULT
);
//cs0
pin_set_remap
(
81
,
PIN_REMAP_DEFAULT
);
//cs0
ls1c_spi_bus_register
(
LS1C_SPI_0
,
"spi0"
);
ls1c_spi_bus_register
(
LS1C_SPI_0
,
"spi0"
);
#endif
#endif
#ifdef RT_USING_SPI1
#ifdef RT_USING_SPI1
...
@@ -257,7 +257,7 @@ int ls1c_hw_spi_init(void)
...
@@ -257,7 +257,7 @@ int ls1c_hw_spi_init(void)
pin_set_remap
(
47
,
PIN_REMAP_THIRD
);
pin_set_remap
(
47
,
PIN_REMAP_THIRD
);
pin_set_remap
(
48
,
PIN_REMAP_THIRD
);
pin_set_remap
(
48
,
PIN_REMAP_THIRD
);
pin_set_remap
(
49
,
PIN_REMAP_THIRD
);
//CS0 - touch screen
pin_set_remap
(
49
,
PIN_REMAP_THIRD
);
//CS0 - touch screen
ls1c_spi_bus_register
(
LS1C_SPI_1
,
"spi1"
);
ls1c_spi_bus_register
(
LS1C_SPI_1
,
"spi1"
);
#endif
#endif
...
@@ -265,30 +265,30 @@ int ls1c_hw_spi_init(void)
...
@@ -265,30 +265,30 @@ int ls1c_hw_spi_init(void)
#ifdef RT_USING_SPI0
#ifdef RT_USING_SPI0
/* attach cs */
/* attach cs */
{
{
static
struct
rt_spi_device
spi_device0
;
static
struct
rt_spi_device
spi_device0
;
static
struct
rt_spi_device
spi_device1
;
static
struct
rt_spi_device
spi_device1
;
static
struct
rt_spi_device
spi_device2
;
static
struct
rt_spi_device
spi_device2
;
static
struct
ls1c_spi_cs
spi_cs0
;
static
struct
ls1c_spi_cs
spi_cs0
;
static
struct
ls1c_spi_cs
spi_cs1
;
static
struct
ls1c_spi_cs
spi_cs1
;
static
struct
ls1c_spi_cs
spi_cs2
;
static
struct
ls1c_spi_cs
spi_cs2
;
/* spi02: CS2 SD Card*/
/* spi02: CS2 SD Card*/
spi_cs2
.
cs
=
LS1C_SPI_CS_2
;
spi_cs2
.
cs
=
LS1C_SPI_CS_2
;
rt_spi_bus_attach_device
(
&
spi_device2
,
"spi02"
,
"spi0"
,
(
void
*
)
&
spi_cs2
);
rt_spi_bus_attach_device
(
&
spi_device2
,
"spi02"
,
"spi0"
,
(
void
*
)
&
spi_cs2
);
spi_cs1
.
cs
=
LS1C_SPI_CS_1
;
spi_cs1
.
cs
=
LS1C_SPI_CS_1
;
rt_spi_bus_attach_device
(
&
spi_device1
,
"spi01"
,
"spi0"
,
(
void
*
)
&
spi_cs1
);
rt_spi_bus_attach_device
(
&
spi_device1
,
"spi01"
,
"spi0"
,
(
void
*
)
&
spi_cs1
);
spi_cs0
.
cs
=
LS1C_SPI_CS_0
;
spi_cs0
.
cs
=
LS1C_SPI_CS_0
;
rt_spi_bus_attach_device
(
&
spi_device0
,
"spi00"
,
"spi0"
,
(
void
*
)
&
spi_cs0
);
rt_spi_bus_attach_device
(
&
spi_device0
,
"spi00"
,
"spi0"
,
(
void
*
)
&
spi_cs0
);
}
}
#endif
#endif
#ifdef RT_USING_SPI1
#ifdef RT_USING_SPI1
{
{
static
struct
rt_spi_device
spi_device
;
static
struct
rt_spi_device
spi_device
;
static
struct
ls1c_spi_cs
spi_cs
;
static
struct
ls1c_spi_cs
spi_cs
;
/* spi10: CS0 Touch*/
/* spi10: CS0 Touch*/
spi_cs
.
cs
=
LS1C_SPI_CS_0
;
spi_cs
.
cs
=
LS1C_SPI_CS_0
;
rt_spi_bus_attach_device
(
&
spi_device
,
"spi10"
,
"spi1"
,
(
void
*
)
&
spi_cs
);
rt_spi_bus_attach_device
(
&
spi_device
,
"spi10"
,
"spi1"
,
(
void
*
)
&
spi_cs
);
}
}
#endif
#endif
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录