|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
8 r q8 ^9 \/ Lvoid PSCInit(void)# ~- K" a# t4 k) ?; g
{
% f) O- h k" n PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 e; d3 [0 @4 C/ Z! F% c2 ^}. w0 ^' B9 n6 n6 O. ^0 a/ ?" ^
' n! D! v$ f# [- q) e. V% ~
void GPIOBankPinMuxSet(void)8 J/ U/ _8 D( n$ B: O5 z
{1 v9 Z6 T$ [5 _- m( L
// DRDY ------------ GPIO6[14] -- 111
, W+ v% V0 v$ y: k& O // SPI1_CLK ------------ GPIO2[13] -- 46
% c- D, o* {% L2 f* c0 g7 A7 M- k // SPI1_SOMI------------ GPIO2[11] -- 44
! z; v0 B z( E& `5 ?7 U& E9 v // SPI1_SIMO------------ GPIO2[10] -- 43" ?: B7 c8 p% r% q% O+ |7 ~
// SPI1_CS2 ------------ GPIO1[0] -- 17
" v/ G" p9 n* K8 o4 T3 G2 g! C // SPI1_CS3 ------------ GPIO1[1] -- 18, L% d* q5 z& N, |" Q& u
$ p- N* Z) Z" f" u8 d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- g6 z, {/ d" V$ ?. K
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 r2 X9 g3 f$ i8 S, Q a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% Q" u& `7 U. n' T' t1 n/ A9 s
+ U& m, D$ N8 B1 d$ o; a: W //DRDY
$ w; z0 N4 {/ }' x+ I8 `' C6 G9 d GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY+ u2 t3 G9 [4 w
// CS2,CS3& k; J' m3 ]( N" t' i3 V+ a! t
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS28 w; g6 j7 `& P8 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
# L, u% B; W- g7 i5 i //SIMO
) t+ `" m4 E7 z% {- ? GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO: e* P9 z* J0 ~6 E0 n1 l
//SOMI6 g1 x n) F( L& {& a( S+ F0 y) n
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
# D# {7 N* n! |. a! W, V3 c' I //CLK. i6 c9 `" w" S. t0 G; Q
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
0 i1 l* I- b/ E* M0 n/ [2 c
4 R0 E8 F: B4 D+ _ // LDAC" |3 D2 z+ V- l( c$ {9 Y7 B
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
+ z6 q6 j7 O+ G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, s1 V, `) E# A4 s! V- j% k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) z7 |3 k8 x$ {- s, O
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
# X- w. ]0 p' ]* ^, P1 a' p GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
" P& t o1 B( ^* u$ D}* s% `; S) o- g8 r9 I# U! A2 x; q* g
$ q9 a5 N4 v4 _% E) `# Q
int main(void)' ]. V2 \% E+ M
{
. o; Q- b' T4 r& ~ // 外设使能
8 m! S- t! C8 W- p PSCInit();; I; n+ x% K( p1 L
4 d5 F3 S4 f' o f G- w
3 _6 y- m% y7 Z3 ^+ [. n1 Y, s. Z; s // 管脚复用配置( n3 S5 ?6 \% {6 u' ^; o- v2 i
GPIOBankPinMuxSet();; h/ C6 B% O: u. M; P
for(;;). E8 h w$ P; {7 A2 q% B' @
{
8 h8 B- {. b* P! H D6 ], _ SET_SCLK();//时钟正常输出
. P- v: _$ z8 r/ c GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 g) S H* N" s/ m1 d, G$ |3 X6 x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
, q# R* g" S1 _8 {; g2 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' y; E- m5 c. B" B
$ P2 h* j( k' y delay(20);
% S9 A* b8 b: q CLR_SCLK();& C# x- k! F2 x7 v: p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS38 f+ h1 p5 D3 d f. e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
) v( M3 R1 D: l& {# H6 k0 x: H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 M' }2 v$ y9 u) r5 j; C
delay(20);* {* B$ ]# r0 d: y" j! q
}: x/ ~* Q3 D3 d, X; z4 u* y
}4 t- S4 N: I2 e ^
|
|