|
|
使用下面的例子代码,不能使SIMO和CS为低电平:/ D. w+ y7 |$ f9 ~+ m
void PSCInit(void)
% m+ Z+ [. [) p2 P) k{
$ E) F5 M0 \3 i* L @( o PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ _; p9 [; [8 ?* R+ Q}
' f0 L, j) K+ G- ]( w6 j1 x4 C4 d2 E
void GPIOBankPinMuxSet(void)+ l- G7 N9 Z5 E6 X a$ }+ b
{% ^7 b+ V( k' E" [
// DRDY ------------ GPIO6[14] -- 111
' H; O* g& a' ]: U // SPI1_CLK ------------ GPIO2[13] -- 46! E1 P. H- _3 r$ b7 h- U
// SPI1_SOMI------------ GPIO2[11] -- 44) h$ I. R5 ?4 F) [
// SPI1_SIMO------------ GPIO2[10] -- 431 t+ l4 l, x7 q+ j8 B& J; Y+ A
// SPI1_CS2 ------------ GPIO1[0] -- 176 d# X8 {# q7 M0 c+ ^* i4 H
// SPI1_CS3 ------------ GPIO1[1] -- 18
' ~' R/ J/ W: H7 ?# W$ ?
% U& t" h, C( y; A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 x8 E9 t' H- {1 F) y5 n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% Q# U7 J1 w" T4 _
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);. I( U/ R6 F' a4 X# z/ ?7 U
- P. Y( @" s, c( _5 [5 | //DRDY
L+ {7 N2 s6 k6 C5 w, |6 y3 s GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY, \9 O1 |( W+ \) v7 C
// CS2,CS3
: D" b: M% T6 G* P: T( { GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& @( d4 K% S( T5 O x" B GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS32 H3 f( e# ?: P3 @7 q+ B$ L
//SIMO
* R, ]2 b+ y) A2 ?( e0 @; b; X; { GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 d/ B' |# ?* ~; q& `+ O$ ~ //SOMI
$ z7 T. X4 @- o& j* {8 L; X6 e GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) U9 [" P4 l) f: @' h //CLK
, J/ i- A# g4 r8 d& C2 H4 \ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK3 [4 g4 y8 h9 I/ I
1 C `! E6 `( U4 h5 G // LDAC
5 o, y0 C1 b O, W GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, S! W1 T' o4 ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& D+ f: _3 |. I/ n9 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) z) M% R) O: w* @# q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 B2 n% Y* J3 Z GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY* S. c( r8 V" K5 `6 |
}
0 W' N3 L% c& T9 Y F7 J3 {+ O2 J; y% l
int main(void): d Y& H8 J/ U7 r
{3 d G5 P2 P) P) L
// 外设使能: L9 @* f# K! y9 w* X$ f$ I
PSCInit();+ H7 d9 [2 r& e! W* U( ]5 Q! T
& B3 w1 G: o. C& G
, d5 D q2 u! X+ C$ S // 管脚复用配置1 w2 f! R ?- Q3 w
GPIOBankPinMuxSet(); E9 W( Y0 k$ c* W) Z: I
for(;;)+ J4 x- k3 l2 X$ x" g/ d
{
3 M8 a, P; r: H( H, L1 Q SET_SCLK();//时钟正常输出# E6 s' ?. o1 b% {: t( l* g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 r* H& \2 S8 ~5 o4 r5 Y+ w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 h! |5 w1 c. z% I4 l
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: B* X3 K, i$ ]% J% e( V2 [
; a0 l; o' {" d6 @! v
delay(20);
4 X' ?5 z1 R, b CLR_SCLK();8 c" m T& z# s0 K) I
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% a4 \, k5 o1 u" {# A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 W1 J( Q: ^: s% M7 y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN& T, C1 e/ Z0 h2 D
delay(20);
& d& t- }* r5 t3 g0 ?. X, R8 ^ }
m, g+ O9 F% V1 \. v}& Y# l! T& q0 f2 k6 Y
|
|