|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
% ~& Q5 F# ]) h2 T3 Z/ Q6 jvoid PSCInit(void)6 m; \& D8 _, k& A) P' i
{# E' v, t+ a9 W% V
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ ]$ p# [7 D3 @0 O1 r9 S, F. x}% _- c3 ~" S+ A, [" j0 t
9 Q% T* F; T' B) ivoid GPIOBankPinMuxSet(void)8 I0 c) K2 m/ a
{ c6 u) D5 K, {% V" {1 q. |' N
// DRDY ------------ GPIO6[14] -- 111
1 `2 x% D& R$ ?* s; {# k // SPI1_CLK ------------ GPIO2[13] -- 46
; E: T$ }8 Y) Q! I* i8 g0 M+ V7 b2 y# a // SPI1_SOMI------------ GPIO2[11] -- 44/ l) L( U% a3 i* d: [3 G1 R
// SPI1_SIMO------------ GPIO2[10] -- 43
6 V9 N5 @% k2 A# S T. F0 G% b // SPI1_CS2 ------------ GPIO1[0] -- 17
8 ]; I: a# \. N$ j // SPI1_CS3 ------------ GPIO1[1] -- 18
, s4 d- N% D1 ~) G2 b9 N0 N8 k! T/ p9 ^' v
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# v& P. U6 K# m5 S) { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);4 R, v1 F8 T* i1 Y& D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ b) o4 O' f0 d) ^! r( ~
1 S5 h8 c8 s" k$ F4 M/ T //DRDY+ u7 ^" O! E" Q8 z# t
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
0 E' b0 Y0 B( ?1 } // CS2,CS34 A b8 j. e0 ^; H# ^
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ P% _& k: C, B. }. {5 i
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
( E$ w, k# v3 x- ^0 \ //SIMO
% z) t+ |7 o7 G4 e GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO% H7 F- z' N @# O
//SOMI# @* a% B" V. R8 m
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! ^) {- ~& X4 D1 d& P' E1 @: @ //CLK4 m: }8 N% s4 Z! [
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; H# a* {$ m# y$ i1 a8 W# k* a1 P. B. E$ {& N Z9 m' o
// LDAC1 @; d, Q7 @' ?" L
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK8 s; K7 N7 R" B6 R1 n# P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& ~/ m9 o0 V- M% B, S7 _% y; U$ Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, u( `8 a @2 d; W% X" t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS30 f/ r4 X: M7 o' R0 B6 P
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: p7 b7 E& o2 C3 m& U" t}$ N. P0 A( w5 O/ G
4 a& _7 v$ N$ ?int main(void)5 G! G: U/ d8 n
{
/ V/ d+ R/ L7 X- m& k // 外设使能. Q( I/ f& d+ P% P
PSCInit();6 j1 N0 c* }7 u5 J* g6 K
! [' T B, `. j+ }2 K
4 y W' m1 | W/ Z" I1 [
// 管脚复用配置$ I/ A; L: _; j! T e* o. j: o
GPIOBankPinMuxSet();
5 g) l- [9 G0 X* u! G for(;;)
$ q! y. Y6 c1 w* D, q {5 m3 I: z6 {% u* x
SET_SCLK();//时钟正常输出0 P1 r" w6 r# {7 {! S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 \. O% n, R! m# D
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS38 B& q2 R$ n! d+ h) K4 x" f7 f) A0 \$ X
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
7 ]* ?6 A: r* B
1 y6 h8 B0 A. P6 O1 r delay(20);. }( i. \9 W6 W; c
CLR_SCLK();
9 h) ~3 @4 e4 b# x GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3( ?4 z8 _: o- s) R
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ `' y0 `( {. m/ O F+ |/ i GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ T5 Y( F7 a% D1 G4 x
delay(20);
~: ~4 I: B6 L" d" E3 e& ~0 E: q }
1 b" W9 G! x! R& W}" X4 l4 G* }3 _9 y
|
|